PHP pack() 函数

PHP Misc 参考手册 PHP Misc 参考手册

实例

把数据装入一个二进制字符串:

<?php
echo pack("C3",80,72,80);
?>

运行实例 »

定义和用法

pack() 函数把数据装入一个二进制字符串。

这在网络传输、文件处理和数据存储中非常有用,特别是在需要精确控制数据格式和大小端序时。


语法

string pack(string $format, mixed $arg1 [, mixed $arg2, ...])
  • $format:一个字符串,指定了如何将给定的 arg1, arg2, ... 参数打包。每个字符代表一个数据类型和大小。
  • $arg1, $arg2, ...:要打包的数据。可以是整数、浮点数或字符串等。

pack() 函数返回打包后的二进制字符串,如果出现错误则返回 false。


参数 描述
format 必需。规定在包装数据时所使用的格式。

可能的值:

整数

  • c:有符号字符(1 字节)。
  • C:无符号字符(1 字节)。
  • s:有符号短整数(2 字节,主机字节序)。
  • S:无符号短整数(2 字节,主机字节序)。
  • l:有符号长整数(4 字节,主机字节序)。
  • L:无符号长整数(4 字节,主机字节序)。
  • q:有符号长长整数(8 字节,主机字节序)。
  • Q:无符号长长整数(8 字节,主机字节序)。

浮点数

  • f:单精度浮点数(4 字节,主机字节序)。
  • d:双精度浮点数(8 字节,主机字节序)。

字符串和其他类型

  • x:NUL 字节(填充字节,没有参数)。
  • a:NUL 结束的字符串(取参数作为字符串)。
  • A:空格填充的字符串(取参数作为字符串)。
  • @:填充到指定长度的 NUL 字节。
args+ 可选。规定被包装的一个或多个参数。

技术细节

返回值: 返回包含数据的二进制字符串。
PHP 版本: 4+
更新日志: 在 PHP 5.5 中新增了 "Z" 代码,与用于 Perl 兼容的 "a" 具有相同的功能。


更多实例

下面是一些使用 pack() 函数的示例。

打包一个无符号短整数和一个字符串:

实例

$data = pack('S', 65535); // 打包无符号短整数 65535
echo bin2hex($data); // 输出: ffff

打包一个有符号长整数和一个字符串:

实例

$data = pack('l', -2147483648); // 打包有符号长整数 -2147483648
echo bin2hex($data); // 输出: 0000000080000000

打包一个浮点数和一个字符串:

实例

$data = pack('f', 3.14); // 打包浮点数 3.14
echo bin2hex($data); // 输出: 4048f5c3

注意事项

  • pack() 函数是用于将数据转换为二进制格式的强大工具,但需要确保你了解所需格式的每个字符含义和使用方式。
  • 大小端序(字节序)问题:在不同的系统上,整数和浮点数的表示方式可能不同,可以使用 pack()unpack() 函数来确保数据在不同系统间的正确传输和解析。
  • 可以使用 bin2hex() 函数将二进制数据转换为十六进制字符串进行输出和调试。
PHP Misc 参考手册 PHP Misc 参考手册