【问题标题】:How to convert an array of bytes to a hex string?如何将字节数组转换为十六进制字符串?
【发布时间】:2015-09-21 14:07:25
【问题描述】:

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

$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 converter


【解决方案1】:

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

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

然后把它变成一个字符串:

$bin = join($chars);

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

$hex = bin2hex($bin);

请参阅:array_mapchrjoinbin2hex。 (当然,您可以在一行中完成所有操作。)

【讨论】:

  • 不错的一步一步的解决方案与参考 :) ! (不太确定 OP 是否真的想要大写字母,如果是,则 OP 只需要使用strtoupper
  • 我也怀疑它是否“更快”。 (也许阅读起来更快。)
  • 是的,我也不太确定,OP 到底在寻找什么:stackoverflow.com/questions/31211772/… 他的问题。
  • 我猜这只是微优化问题之一。
猜你喜欢
  • 2017-08-23
  • 1970-01-01
  • 2021-10-31
  • 2019-02-12
相关资源
最近更新 更多