2015-07-03 53 views
0

我有一个解决方案,但是这个解决方案很慢。 例子:如何将字节数组转换为十六进制字符串?

$arr = array(14, 0, 1, 0, 0, 0, 0, 0, 0, 224, 0, 255, 255, 255, 255, 255); 
$hex_str = ""; 
foreach ($arr as $byte) 
{ 
    $hex_str .= sprintf("%02X", $byte); 
} 

结果是:0E0001000000000000E000FFFFFFFFFF

格式是:

255 => FF 
0 => 00 
1 => 01 
14 => 0E 

如果你知道一个更快的解决方案,分享请。

+2

您的代码作品很简单。没有办法完成你所需要的东西,这样可以节省你比输入问题更多的时间。 – Sammitch

回答

3

您可以先将每个整数转换为char。

$chars = array_map("chr", $arr); 

然后使它成为一个字符串:

$bin = join($chars); 

最后将其转换成一个十六进制字符串:

$hex = bin2hex($bin); 

见:array_mapchrjoinbin2hex。 (当然,你可以在一行中完成所有工作。)

+1

不错的一步一步解决方案与参考:)! (不太确定,如果OP真的想要大写字母,如果是的OP只需要使用'strtoupper') – Rizier123

+1

我也怀疑它以任何方式“更快”。 (只是更快的阅读也许。) – mario

+0

是的,我也不是很确定,究竟OP是寻找什么:http://stackoverflow.com/questions/31211772/how-to-convert-an-array-of- bytes-to-a-hex-string/31211886?noredirect = 1#comment50425505_31211772与他的问题。 – Rizier123

相关问题