有人可以向我解释PHP中的pack()函数吗?

时间:2009-06-12 17:11:02

标签: php function binary pack

我想更多地了解PHP中的pack()函数:https://secure.php.net/manual/en/function.pack.php

我知道它将数据打包成二进制文件,但我不确定那些v V n N c C是什么意思,我想知道是否有人可以如此善良地给我一个何时使用哪种格式的实际演示? / p>

在我看来,在线文档,对于更改,缺乏信息。

2 个答案:

答案 0 :(得分:25)

这些表示您希望打包的数据以二进制格式表示的方式:

所以

$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";
?>

答案 1 :(得分:11)

如包的php文档中所述,该函数是从Perl的pack函数中借用的。

查看Perl's documentation for pack,特别是页面底部的示例部分。 PHP的包没有实现所有格式,但Perl的函数文档在提供示例和解释每种格式方面做得更好。