函数名:unpack()
适用版本:PHP 4, PHP 5, PHP 7
用法:unpack(string $format, string $data): array|false
解释:unpack() 函数将二进制字符串解包成一个数组。格式字符串指定了数据的顺序以及每个数据的类型和大小。
参数:
- $format:格式字符串,指定了数据的顺序和类型。格式字符串由一个或多个格式指令组成,每个指令对应一个数据元素。
- $data:要解包的二进制字符串。
返回值:
- 如果解包成功,将返回解包后的数组,其中每个元素对应一个数据元素。
- 如果解包失败,将返回 false。
示例:
- 解包一个包含整数和浮点数的二进制字符串:
$data = "\x04\x00\xa0\x00\xcd\xcc\xcc\x3d";
$result = unpack("Sint/ffloat", $data);
print_r($result);
输出:
Array
(
[int] => 1024
[float] => 0.1
)
- 解包一个包含多个整数的二进制字符串:
$data = "\x01\x00\x02\x00\x03\x00";
$result = unpack("S*", $data);
print_r($result);
输出:
Array
(
[1] => 1
[2] => 2
[3] => 3
)
- 解包一个包含字符串和整数的二进制字符串:
$data = "\x05H\0\0\0Hello";
$result = unpack("Clength/A*string", $data);
print_r($result);
输出:
Array
(
[length] => 5
[string] => Hello
)
注意事项:
- 格式字符串中的格式指令必须与实际数据的类型和顺序相匹配,否则解包可能会失败。
- 格式指令可以包含大小和字节顺序(大端或小端)的修饰符,以适应不同的数据结构。
- 解包的结果数组的键名由格式字符串中的命名指令决定,可以自定义键名以方便后续处理。