当前位置:首页 > PHP

php pack 实现

2026-02-14 09:45:25PHP

PHP pack 函数概述

pack 函数用于将数据按照指定格式打包成二进制字符串,常用于处理二进制数据、网络协议或文件格式。其语法为:

string pack ( string $format , mixed $args1 [, mixed $... ] )

$format 参数指定打包格式,后续参数为待打包的值。

常用格式字符

格式符 含义 示例值类型
a NUL 填充的字符串 "abc"
A 空格填充的字符串 "abc"
h 16进制字符串(低位在前) "1a2b"
H 16进制字符串(高位在前) "1a2b"
c 有符号字符 65
C 无符号字符 65
s 有符号短整型(16位) 1234
S 无符号短整型(16位) 1234
n 无符号短整型(大端序) 1234
v 无符号短整型(小端序) 1234
i 有符号整型(依赖平台) 123456
I 无符号整型(依赖平台) 123456
f 单精度浮点数 3.14
d 双精度浮点数 3.14

使用示例

打包字符串和整型

$binary = pack('A5a5n', 'Hello', 'World', 1234);
// 输出:Hello\x00\x00\x00World\x00\x00\x00\x04\xD2
  • A5:将 "Hello" 填充为5字节(空格填充)。
  • a5:将 "World" 填充为5字节(NUL 填充)。
  • n:将 1234 打包为大端序16位整型。

打包16进制数据

$hex = pack('H*', '4a6f7921');
// 输出:Joy!(16进制字符串转ASCII)

打包浮点数

$float = pack('f', 3.14);
// 输出:二进制形式的单精度浮点数

注意事项

  • 格式字符区分大小写(如 nN 不同)。
  • 参数数量需与格式符匹配,否则报错。
  • 大端序(n)和小端序(v)在网络传输中需明确指定。
  • 使用 unpack 函数可解包二进制数据。

解包示例

$data = unpack('A5first/a5second/nnumber', $binary);
print_r($data);
// 输出:Array ( [first] => Hello [second] => World [number] => 1234 )

通过合理组合格式字符,pack 可灵活处理各类二进制数据场景。

php pack 实现

标签: phppack
分享给朋友:

相关文章

php验证码实现

php验证码实现

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

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数:…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO que…