English | 简体中文 | 繁體中文
查询

unpack()函数—用法及示例

「 将二进制字符串解包成一个数组 」


函数名:unpack()

适用版本:PHP 4, PHP 5, PHP 7

用法:unpack(string $format, string $data): array|false

解释:unpack() 函数将二进制字符串解包成一个数组。格式字符串指定了数据的顺序以及每个数据的类型和大小。

参数:

  • $format:格式字符串,指定了数据的顺序和类型。格式字符串由一个或多个格式指令组成,每个指令对应一个数据元素。
  • $data:要解包的二进制字符串。

返回值:

  • 如果解包成功,将返回解包后的数组,其中每个元素对应一个数据元素。
  • 如果解包失败,将返回 false。

示例:

  1. 解包一个包含整数和浮点数的二进制字符串:
$data = "\x04\x00\xa0\x00\xcd\xcc\xcc\x3d";
$result = unpack("Sint/ffloat", $data);

print_r($result);

输出:

Array
(
    [int] => 1024
    [float] => 0.1
)
  1. 解包一个包含多个整数的二进制字符串:
$data = "\x01\x00\x02\x00\x03\x00";
$result = unpack("S*", $data);

print_r($result);

输出:

Array
(
    [1] => 1
    [2] => 2
    [3] => 3
)
  1. 解包一个包含字符串和整数的二进制字符串:
$data = "\x05H\0\0\0Hello";
$result = unpack("Clength/A*string", $data);

print_r($result);

输出:

Array
(
    [length] => 5
    [string] => Hello
)

注意事项:

  • 格式字符串中的格式指令必须与实际数据的类型和顺序相匹配,否则解包可能会失败。
  • 格式指令可以包含大小和字节顺序(大端或小端)的修饰符,以适应不同的数据结构。
  • 解包的结果数组的键名由格式字符串中的命名指令决定,可以自定义键名以方便后续处理。
补充纠错
下一个函数: unlink()函数
热门PHP函数
分享链接