当前位置:首页 > PHP

php pack 实现

2026-01-29 11:39:22PHP

PHP pack 函数概述

pack 函数用于将数据按照指定格式打包成二进制字符串。该函数在二进制数据处理、网络协议封装或文件格式生成等场景中非常实用。

基本语法

string pack ( string $format , mixed $args [, mixed $... ] )
  • $format:格式化字符串,指定如何打包数据。
  • $args:待打包的数据,数量需与 $format 中的指令匹配。

常用格式指令

指令 说明 示例值
a 以 NULL 填充的字符串 "abc\0"
A 以空格填充的字符串 "abc "
h 十六进制字符串(低位在前) "1a2b"
H 十六进制字符串(高位在前) "a1b2"
c 有符号字符 65 (-> 'A')
C 无符号字符 255
s 有符号短整型(16位) 1234
S 无符号短整型(16位) 65535
n 无符号短整型(大端序) 1234
v 无符号短整型(小端序) 1234
i 有符号整型(依赖平台) 123456
I 无符号整型(依赖平台) 123456
l 有符号长整型(32位) 123456
L 无符号长整型(32位) 123456
N 无符号长整型(大端序) 123456
V 无符号长整型(小端序) 123456
f 单精度浮点数 3.14
d 双精度浮点数 3.1415926

使用示例

打包字符串

$binary = pack('A5', 'hello'); // 输出 "hello"(右补空格)
$binary = pack('a5', 'hello'); // 输出 "hello\0"(右补 NULL)

打包整型数据

$binary = pack('s', 1234);     // 小端序短整型
$binary = pack('n', 1234);     // 大端序短整型

打包多个数据

$binary = pack('sNa10', 1234, 5678, 'test'); 
// 打包短整型(小端序)、长整型(大端序)和字符串

十六进制数据处理

$binary = pack('H*', '48656c6c6f'); // 解码为 "Hello"

实际应用场景

网络协议封装

// 构造一个简单的协议头:类型(1字节) + 长度(2字节)
$type = 1;
$data = "payload";
$header = pack('Cn', $type, strlen($data));
$packet = $header . $data;

二进制文件生成

// 生成 BMP 文件头(部分示例)
$header = pack('vVvV', 19778, 54, 0, 0); // BM 标识 + 文件大小等

注意事项

  • 格式字符串中的指令数量必须与参数数量严格匹配。
  • 大端序(n, N)适用于网络传输,小端序(v, V)适用于多数本地系统。
  • 使用 * 可以重复格式指令直到参数用完(如 pack('C*', ...))。
  • 解包操作需使用 unpack 函数,其格式与 pack 类似。

通过合理使用 pack 函数,可以实现高效的二进制数据生成与处理。

php pack 实现

标签: phppack
分享给朋友:

相关文章

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开:…

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE o…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $d…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置…