如何在PHP中将字节数组转换为字符串?

Dam*_*mir 20 php ascii

我有一个字节数组,我想映射到它们的ASCII等价物.

我怎样才能做到这一点?

mar*_*rio 75

如果用字节数组表示:

$bytes = array(255, 0, 55, 42, 17,    );
Run Code Online (Sandbox Code Playgroud)

array_map()

然后它就像这样简单:

$string = implode(array_map("chr", $bytes));
Run Code Online (Sandbox Code Playgroud)

的foreach()

哪个是紧凑版:

$string = "";
foreach ($bytes as $chr) {
    $string .= chr($chr);
}
// Might be a bit speedier due to not constructing a temporary array.
Run Code Online (Sandbox Code Playgroud)

包()

但最合适的替代方法可能是使用pack("C*", [$array...]),即使它需要在PHP中使用时髦的数组解决方法来传递整数列表:

$str = call_user_func_array("pack", array_merge(array("C*"), $bytes)));
Run Code Online (Sandbox Code Playgroud)

如果您可能需要从字节C*(对于ASCII字符串)切换到字S*(对于UCS2)或者甚至具有32位整数L*(例如,UCS4 Unicode字符串)的列表,那么该构造也更有用.


Eat*_*ich 7

修改 mario 使用的答案pack():自 PHP 5.5 起,您可以使用 Argument unpacking via...

$str = pack('C*', ...$bytes);
Run Code Online (Sandbox Code Playgroud)

其他函数都可以使用,但最好有可读的代码。