我想知道如何反转这个解压缩功能.我认为pack函数能够反转unpack执行的内容,但是我不确定.
首先,我有一个简单的字符串,在解压缩之后,我会有一个表示这种字符串的字节数组.现在我想知道如何将这样的数组反转回原始字符串.
<?php
$array = unpack('C*', "odd string");
/*Output: Array
(
[1] => 111
[2] => 100
[3] => 100
[4] => 32
[5] => 115
[6] => 116
[7] => 114
[8] => 105
[9] => 110
[10] => 103
)*/
$string = pack("which format here?", $array);
echo $string;
#Desired Output: odd string
?>
Run Code Online (Sandbox Code Playgroud)
谢谢.
Sah*_*tal 12
你应该使用call_user_func_array来恢复unpack('C*', “string”),如下所示:
call_user_func_array('pack', array_merge(array('C*'), $array )))
Run Code Online (Sandbox Code Playgroud)
当您使用 PHP 5.6 时,您应该考虑使用参数解包,因为它比使用快 4 到 5 倍call_user_func_array:
pack('C*', ...$array);
Run Code Online (Sandbox Code Playgroud)
当您使用 PHP 5.5 或更低版本时,您应该考虑使用ReflectionFunction,它似乎比call_user_func_array:
$packFunction = new ReflectionFunction('pack');
$packFunction->invokeArgs(array_merge(array('C*'), $array));
Run Code Online (Sandbox Code Playgroud)