当前位置:首页 > PHP

php pack 实现

2026-02-14 09:45:25PHP

PHP pack 函数概述

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

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

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

php pack 实现

常用格式字符

格式符 含义 示例值类型
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

使用示例

打包字符串和整型

php pack 实现

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

标签: phppack
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php 实现自动收货

php 实现自动收货

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

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 实现跳转

php 实现跳转

PHP 实现页面跳转的方法 在PHP中,实现页面跳转可以通过多种方式完成,以下是几种常用的方法: 使用header函数 header函数是PHP中最常用的跳转方法,通过发送HTTP头部信息实现跳转。…

php实现多态

php实现多态

多态的概念 多态是面向对象编程的三大特性之一,指同一个方法在不同类中有不同实现方式。PHP通过继承和接口实现多态。 通过继承实现多态 父类定义方法,子类重写该方法实现不同行为: class Ani…

php 实现https

php 实现https

在 PHP 中实现 HTTPS 确保 PHP 应用通过 HTTPS 协议安全传输数据,可以通过以下几种方式实现: 配置服务器强制 HTTPS 在 Web 服务器(如 Apache 或 Nginx)中…