当前位置:首页 > PHP

php pack 实现

2026-01-29 11:39:22PHP

PHP pack 函数概述

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

php 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 函数,可以实现高效的二进制数据生成与处理。

标签: phppack
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php实现统计

php实现统计

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

php实现注册登录

php实现注册登录

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