43

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

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

在我看来,在线文档缺少信息。

4

2 回答 2

27

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

所以

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

在哪里

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

它告诉包您希望如何在二进制数据中表示数据。下面的代码将证明这一点。请注意,您可以使用与打包数据不同的格式进行解包。

<?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";
?>
于 2009-06-12T17:20:15.803 回答
11

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

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

于 2009-06-12T17:34:59.777 回答