Karp 的技术博客

在 PHP 中,packunpack 函数用于数据的打包和解包,通常用于处理二进制数据。pack 将数据打包成二进制格式,而 unpack 则将二进制数据解包成 PHP 变量。

1. pack 函数

1.1 函数原型

string pack(string $format, mixed ...$values)
  • $format:一个格式字符串,定义了要打包的数据类型。
  • $values:要打包的一个或多个值。

1.2 常用格式字符

格式字符说明
A字符串(填充空格)
a字符串(不填充)
C无符号字符
c有符号字符
S无符号短整型
s有符号短整型
I无符号整型
i有符号整型
f单精度浮点数
d双精度浮点数

2. unpack 函数

2.1 函数原型

array unpack(string $format, string $data)
  • $format:格式字符串,定义了要解包的数据类型。
  • $data:要解包的二进制数据。

3. 示例代码

3.1 使用 pack 打包数据

以下示例展示如何使用 pack 将多个数据项打包成二进制格式:

<?php
// 打包一个字符串、一个字符和一个整数
$packedData = pack('A10C3I', 'Hello', 'A', 12345);

// 打印打包后的二进制数据
echo "Packed Data: " . bin2hex($packedData) . "\n"; // 用 hex 表示
?>

3.2 使用 unpack 解包数据

接下来,使用 unpack 将上一步打包的数据解包:

<?php
// 解包数据
$unpackedData = unpack('A10string/C1char/Iint', $packedData);

// 打印解包后的数据
echo "Unpacked Data:\n";
echo "String: " . $unpackedData['string'] . "\n";
echo "Char: " . $unpackedData['char'] . "\n";
echo "Int: " . $unpackedData['int'] . "\n";
?>

3.3 完整示例

将打包和解包结合在一起:

<?php
// 打包数据
$packedData = pack('A10C3I', 'Hello', 'A', 12345);
echo "Packed Data: " . bin2hex($packedData) . "\n";

// 解包数据
$unpackedData = unpack('A10string/C1char/Iint', $packedData);
echo "Unpacked Data:\n";
echo "String: " . $unpackedData['string'] . "\n";
echo "Char: " . $unpackedData['char'] . "\n";
echo "Int: " . $unpackedData['int'] . "\n";
?>

4. 运行结果

运行上述完整示例,您将看到类似于以下的输出:

Packed Data: 48656c6c6f4100000000000000000000000000000000003039
Unpacked Data:
String: Hello
Char: 65
Int: 12345

php

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年10月21日 02:15
0

目录

来自 《PHP 中的 PACK 和 UNPACK 函数解压缩实例》