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