3
A
回答
10
$bin = pack("h*", str_replace('-', '', $guid));
0
如果你读了关于准确的格式和字符串表示的章节由DCE定义的UUID,则不能将UUID字符串当作十六进制字符串,请参阅String Representation of UUIDs(参考Microsoft Developer Network)。 也就是说因为前三个字段以大端(最高有效位数字)表示。
因此,最准确的方法(可能最快)上运行PHP 32位小端系统上:
$bin = call_user_func_array('pack',
array_merge(array('VvvCCC6'),
array_map('hexdec',
array(substr($uuid, 0, 8),
substr($uuid, 9, 4), substr($uuid, 14, 4),
substr($uuid, 19, 2), substr($uuid, 21, 2))),
array_map('hexdec',
str_split(substr($uuid, 24, 12), 2))));
它将该字符串转换成田,变成十六进制表示成十进制数,然后轧液它们通过pack
。
因为我无法访问大端架构,所以无法验证它是否有效或者必须使用不同的格式说明符pack
。
相关问题
- 1. 十进制数转换在半字节的二进制形式
- 2. 添加字节用16进制编辑
- 3. Chrome 16 websocket二进制
- 4. 16位二进制补码
- 5. 读取二进制字节
- 6. 将字节[]转换为二进制的字符串表示形式
- 7. 如何获取二进制形式的节点值?
- 8. 如何从Perl的二进制文件中获得最后的16个字节?
- 9. 由此产生的二进制数16
- 10. C#EF6的Code First二进制(16)列
- 11. 如何复制二进制文件的字节为字节
- 12. MATLAB:读取无符号16位二进制文件的两个字节
- 13. Integer.MIN_VALUE的二进制表示形式
- 14. 以二进制形式的文件
- 15. NSString的二进制表示形式
- 16. Java |二进制字符串到字节
- 17. Java二进制文字 - 字节值-128
- 18. 从小字节16进制值的长字符串中打印十进制值
- 19. 将32字节的十六进制字符串转换为16字节的十六进制字符串
- 20. 二进制形状
- 21. 将十六进制转换为二进制和16位二进制补码
- 22. Java获取字符的十进制字节表示形式
- 23. 转换11字节的十六进制字符串字节大小16
- 24. 复制一个二进制文件32字节每32字节
- 25. 用executemany插入二进制文件(16)
- 26. 16位二进制前导零
- 27. 指导二进制16来回PHP
- 28. 替代在C#MySQL二进制(16)
- 29. 将数字转换的二进制补码形式有符号的十进制
- 30. 大数以二进制形式
非常感谢你 – Marcin 2010-03-20 19:36:03
反向转换也可能是有用的:http://stackoverflow.com/a/2839147/536308 – 2012-03-02 11:39:46
请注意,如果你的二进制值必须是可互操作的,你需要注意字节顺序(字节顺序)与其他软件。不同的规范与文本字段的解释不一致;请参阅[this](http://howtowriteaprogram.blogspot.ca/2009/03/uuid-and-byte-order.html)。 – Kevin 2013-08-20 05:53:58