mar*_*rio 75
如果用字节数组表示:
$bytes = array(255, 0, 55, 42, 17, );
Run Code Online (Sandbox Code Playgroud)
然后它就像这样简单:
$string = implode(array_map("chr", $bytes));
Run Code Online (Sandbox Code Playgroud)
哪个是紧凑版:
$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字符串)的列表,那么该构造也更有用.
修改 mario 使用的答案pack()
:自 PHP 5.5 起,您可以使用 Argument unpacking via...
$str = pack('C*', ...$bytes);
Run Code Online (Sandbox Code Playgroud)
其他函数都可以使用,但最好有可读的代码。