如何将字节数组转换为十六进制字符串?

问题描述 投票:0回答:2

我有一个解决方案,但是这个解决方案很慢。 示例:

$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

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

php arrays converters
2个回答
11
投票

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

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

然后将其设为字符串:

$bin = join($chars);

最后将其转换为十六进制字符串:

$hex = bin2hex($bin);

参见:

array_map
chr
join
bin2hex
。 (当然,您可以在一行中完成所有操作。)


0
投票

我认为这是更好的方法:

 $hexbin = [System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary]::new()
 $hexbin.Value = $arr
 $hexString = $hexbin.ToString()
© www.soinside.com 2019 - 2024. All rights reserved.