当前位置:首页 > 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)

打包浮点数

php pack 实现

$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 可灵活处理各类二进制数据场景。

标签: phppack
分享给朋友:

相关文章

php队列的实现

php队列的实现

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

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php实现统计

php实现统计

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

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php实现注册登陆

php实现注册登陆

PHP 注册功能实现 创建数据库表结构(MySQL示例): CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…