2011-05-18 58 views
1

我需要將系統生成的GUID轉換爲Byte [16]數組,然後將這些十進制值轉換爲十六進制值字符串。瘋狂,我知道,我非常樂於採用比我嘗試過的更有效的方法!使用PHP將GUID轉換爲Byte數組?

我試過這個GUID的PHP解壓縮()函數,但似乎無法得到正確的格式。我試過c *,C *和所有其他可能的格式。

這裏是我開始與GUID:

GUID: dwRhRSIjlGXhAAAAkuFQ0A

的字節[16]數組我試圖填充應該是這樣的:

$bytearray = array(119,4,97,69,34,35,-108,101,-31,0,0,0,-110,-31,80,-48); 

一旦我得到這個$ bytearray值,我可以很容易地使用PHP的dechex()函數將這些十進制值中的每一個轉換爲它們相應的十六進制值。此轉換的最終結果應如下所示:

DEC: HEX 
119: 77 
4: 4 
97: 61 
69: 45 
34: 22 
35: 23 
-108: 94 
101: 65 
-31: E1 
0: 00 
0: 00 
0: 00 
-110: 92 
-31: E1 
80: 50 
-48: D0 

再次,任何建議,非常感謝。

回答

1

我不確定我真的得到你想要的東西......你想要一個數組,其中包含你的ID中字符的ASCCI代碼的十六進制值,對嗎?

$str = "dwRhRSIjlGXhAAAAkuFQ0A"; 
$bytes = array(); 

for($i=0,$l = strlen($str);$i<$l;$i++) 
{ 
    $bytes[] = dechex(ord($str[$i])); 
} 
+0

經過進一步調查,看來我上面使用的$ str實際上是一個base64二進制值。我現在正在研究如何將base64解碼爲十六進制。 – Gunnar 2011-05-19 06:43:23

+0

您的解決方案讓我走上正軌!我所要做的只是base64_decode上面的$ str以獲取文本,然後使用您的代碼將文本轉換爲十六進制。再次感謝! – Gunnar 2011-05-19 07:21:24