2011-05-18 51 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