PHP pack() 函数

定义和用法

pack() 函数将数据打包成二进制字符串。

实例

例子 1

将数据打包成二进制字符串:

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

亲自试一试

例子解释:

pack("C*", 80, 72, 80) 将三个无符号字符(80, 72, 80)打包成一个二进制字符串。C* 表示打包一个或多个无符号字符。在这个例子中,输出将是包含这三个字符的二进制字符串。注意,字符 80、72 和 80 在 ASCII 表中分别对应于字符 'P'、'H' 和 'P',因此输出将是字符串 "PHP"。

例子 2

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

亲自试一试

语法

pack(format,args+)
参数 描述
format 必需。指定打包数据时使用的格式。
args+ 可选。指定一个或多个要打包的参数。

format 参数的可能值:

  • a - NUL 填充的字符串
  • A - SPACE 填充的字符串
  • h - 十六进制字符串,低位在前
  • H - 十六进制字符串,高位在前
  • c - 有符号字符
  • C - 无符号字符
  • s - 有符号短整型(总是 16 位,机器字节序)
  • S - 无符号短整型(总是 16 位,机器字节序)
  • n - 无符号短整型(总是 16 位,大端字节序)
  • v - 无符号短整型(总是 16 位,小端字节序)
  • i - 有符号整型(机器相关的大小和字节序)
  • I - 无符号整型(机器相关的大小和字节序)
  • l - 有符号长整型(总是 32 位,机器字节序)
  • L - 无符号长整型(总是 32 位,机器字节序)
  • N - 无符号长整型(总是 32 位,大端字节序)
  • V - 无符号长整型(总是 32 位,小端字节序)
  • q - 有符号长长整型(总是 64 位,机器字节序)
  • Q - 无符号长长整型(总是 64 位,机器字节序)
  • J - 无符号长长整型(总是 64 位,大端字节序)
  • P - 无符号长长整型(总是 64 位,小端字节序)
  • f - 浮点数(机器相关的大小和表示)
  • g - 浮点数(机器相关的大小,小端字节序)
  • G - 浮点数(机器相关的大小,大端字节序)
  • d - 双精度浮点数(机器相关的大小和表示)
  • e - 双精度浮点数(机器相关的大小,小端字节序)
  • E - 双精度浮点数(机器相关的大小,大端字节序)
  • x - NUL 字节
  • X - 回退一个字节
  • Z - NUL 填充的字符串
  • @ - NUL 填充到绝对位置

技术细节

返回值: 返回包含数据的二进制字符串。
PHP 版本: 4+
PHP 更新日志:

8.0.0 - 此函数不再在失败时返回 false。

PHP 7.2 - 浮点数和双精度浮点数现在同时支持大端和小端。

PHP 7.0.15 - 添加了 "E"、"e"、"G"、"g" 代码。

PHP 5.6.3 - 添加了 "Q"、"q"、"J"、"P" 代码。

PHP 5.5 - 添加了 "Z" 代码(与 Perl 兼容,与 "a" 功能相同)。