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. 16位二進制補碼
- 4. Chrome 16 websocket二進制
- 5. 將字節[]轉換爲二進制的字符串表示形式
- 6. 如何從Perl的二進制文件中獲得最後的16個字節?
- 7. C#EF6的Code First二進制(16)列
- 8. Java |二進制字符串到字節
- 9. 以二進制形式的文件
- 10. Erlang的二進制字節長度
- 11. 從小字節16進制值的長字符串中打印十進制值
- 12. 二進制形狀
- 13. 將十六進制轉換爲二進制和16位二進制補碼
- 14. Java獲取字符的十進制字節表示形式
- 15. 指導二進制16來回PHP
- 16. 16位二進制前導零
- 17. 以二進制形式打開文件
- 18. Hazelcast IMap以二進制形式獲取
- 19. 將字節轉換爲二進制
- 20. 字節爲int與二進制補碼
- 21. 字節到二進制在C
- 22. 字節從二進制文件
- 23. SocketAsyncEventArgs與二進制/字節[]流
- 24. 二進制零,NULL字節和ASCII
- 25. .NET十進制的二進制表示形式
- 26. 這是什麼樣的二進制數字表示形式?
- 27. float的二進制字符串表示形式返回0
- 28. c中的二進制數和字符串表示形式
- 29. Go - 如何將二進制字符串轉換爲二進制字節?
- 30. 4位十進制到16位二進制轉換代碼
非常感謝你 – 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