如何在PHP中将字节数组转换为字符串?
我有一个字节数组,我想将其映射到它们的ASCII等效项。
我该怎么做?
如果通过字节数组,则表示:
$bytes = array(255, 0, 55, 42, 17, );
然后就简单到:
$string = implode(array_map("chr", $bytes));
这是以下产品的紧凑版本:
$string = "";
foreach ($bytes as $chr) {
$string .= chr($chr);
}
// Might be a bit speedier due to not constructing a temporary array.
但最可取的替代方案可能是使用 ,即使它需要在 PHP 中使用时髦的数组解决方法来传递整数列表:pack("C*", [$array...])
$str = call_user_func_array("pack", array_merge(array("C*"), $bytes)));
如果您可能需要从字节 C*(对于 ASCII 字符串)切换到单词 S*(对于 UCS2),或者甚至有一个 32 位整数 L* 的列表(例如 UCS4 Unicode 字符串),则该构造也更有用。
修改马里奥使用的答案:从PHP 5.5开始,您可以使用参数解压缩pack()
...
$str = pack('C*', ...$bytes);
其他函数可以使用,但最好具有可读的代码。