PHP 中 pack('V') 的反向操作是什么?
What is reverse action for pack('V') in PHP?
我看到了这样一段代码:
$len = strlen($str1);
$str = pack('V', $len) . $str1 . $str2;
执行相反操作的代码是什么?
据我了解,第一步是:
$len = substr($str, 0, 4);
$str = substr($str, 4);
但下一步是什么?
$len = unpack(???);
$str1 = substr($str, 0, $len);
$str2 = substr($str, $len);
我不太明白我应该如何将二进制 $len
转换回...二进制整数?我会使用常用语言的简单类型转换或内存复制,但我是 PHP.
的新手
只是去掉这里多加的字符串而已
$str = pack('V', $len) . $str1 . $str2;
并打开其余部分。
示例:
// your code
$len = strlen($str1);
$str = pack('V', $len) . $str1 . $str2;
// unpacking
$length_of_packed_string = strlen($str) - strlen($str1 . $str2);
$unpacked = unpack('V', substr($str, 0, $length_of_packed_string));
print_r($unpacked);
请注意,此 returns 是一个数组,您的值位于索引 1(唯一的索引)- 所以 $unpacked[1]
。有关原因的更多信息,请参阅 unpack manpage 的注释部分。
我看到了这样一段代码:
$len = strlen($str1);
$str = pack('V', $len) . $str1 . $str2;
执行相反操作的代码是什么?
据我了解,第一步是:
$len = substr($str, 0, 4);
$str = substr($str, 4);
但下一步是什么?
$len = unpack(???);
$str1 = substr($str, 0, $len);
$str2 = substr($str, $len);
我不太明白我应该如何将二进制 $len
转换回...二进制整数?我会使用常用语言的简单类型转换或内存复制,但我是 PHP.
只是去掉这里多加的字符串而已
$str = pack('V', $len) . $str1 . $str2;
并打开其余部分。
示例:
// your code
$len = strlen($str1);
$str = pack('V', $len) . $str1 . $str2;
// unpacking
$length_of_packed_string = strlen($str) - strlen($str1 . $str2);
$unpacked = unpack('V', substr($str, 0, $length_of_packed_string));
print_r($unpacked);
请注意,此 returns 是一个数组,您的值位于索引 1(唯一的索引)- 所以 $unpacked[1]
。有关原因的更多信息,请参阅 unpack manpage 的注释部分。