有人能解释一下PHP中的pack()函数吗?

44
我想了解 PHP 中的 pack() 函数: https://secure.php.net/manual/en/function.pack.php 我知道它可以将数据打包成二进制,但我不确定这些 v V n N c C 都代表什么,我想知道是否有人可以友好地演示何时使用哪种格式?
我认为在线文档缺乏信息。
2个回答

28

这些代表了你希望打包的数据在二进制格式下的表示方式:

所以

$bin = pack("v", 1); => 0000000000000001 (16位)

其中

$bin = pack("V", 1) => 00000000000000000000000000000001 (32位)

它告诉pack函数你希望在二进制数据中如何表示数据。 下面的代码将演示此操作。请注意,您可以使用与打包数据不同的格式进行解包。

<?php

$bin = pack("S", 65535);
$ray = unpack("S", $bin);
echo "UNSIGNED SHORT VAL = ", $ray[1], "\n";

$bin = pack("S", 65536);
$ray = unpack("S", $bin);
echo "OVERFLOW USHORT VAL = ", $ray[1], "\n";

$bin = pack("V", 65536);
$ray = unpack("V", $bin);
echo "SAME AS ABOVE BUT WITH ULONG VAL = ", $ray[1], "\n";
?>

先生,我可以了解更多关于中继器的信息吗?中继器的预期功能是什么? - Desper

12

正如php文档中所提到的,pack函数是从Perl的pack函数中借鉴过来的。

请参阅Perl的pack文档,具体查看页面底部的示例部分。尽管PHP的pack函数没有实现全部格式,但Perl文档对该函数的解释和示例更加详细。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接