函式名: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
)
注意事項:
- 格式字串中的格式指令必須與實際資料的型別和順序相匹配,否則解包可能會失敗。
- 格式指令可以包含大小和位元組順序(大端或小端)的修飾符,以適應不同的資料結構。
- 解包的結果陣列的鍵名由格式字串中的命名指令決定,可以自定義鍵名以方便後續處理。