The unpack() function is an inbuilt function in PHP which is used to unpack from a binary string into the respective format.
Syntax:
array unpack( $format, $data, $offset )
Parameters: This function accepts three parameters as mentioned above and described below:
-
$format: It is required parameter. It specifies the format to be used while packing data.
- a - denotes string which is NUL-padded.
- A - denotes string which is SPACE-padded.
- h - denotes low nibble first Hex string.
- H - denotes high nibble first Hex string.
- c - denotes signed character.
- C - denotes unsigned character.
- s - denotes signed short (16 bit, machine byte order).
- S - denotes unsigned short (16 bit, machine byte order).
- n - denotes unsigned short (16 bit, big endian byte order).
- v - denotes unsigned short (16 bit, little endian byte order).
- i - denotes signed integer (machine dependent byte order and size).
- I - denotes unsigned integer (machine dependent byte order and size).
- l - denotes signed long (32 bit, machine byte order).
- L - denotes unsigned long (32 bit, machine byte order).
- N - denotes unsigned long (32 bit, big endian byte order).
- V - denotes unsigned long (32 bit, little endian byte order).
- f - denotes float (machine dependent representation and size).
- d - denotes double (machine dependent representation and size).
- x - denotes NUL byte.
- X - denotes Back up one byte.
- Z - denotes string which is NUL-padded.
- @ - denotes NUL-fill to absolute position.
- $data: It is Required parameter. It specifies the binary data to be unpacked.
- offset: This parameter holds the offset to begin from unpacking.
Return Value: It returns an associative array containing unpacked elements on success, or returns FALSE on failure.
Note: This function is available for PHP 4.0.0 and newer version.
Example 1: This program uses C format to unpack the data from binary string.
php
<?php
var_dump( unpack("C*", "GEEKSFORGEEKS"));
?>
Output:
array(13) {
[1]=>
int(71)
[2]=>
int(69)
[3]=>
int(69)
[4]=>
int(75)
[5]=>
int(83)
[6]=>
int(70)
[7]=>
int(79)
[8]=>
int(82)
[9]=>
int(71)
[10]=>
int(69)
[11]=>
int(69)
[12]=>
int(75)
[13]=>
int(83)
}
Example 2:
php
<?php
$binary_data = pack("c2n2", 0x1634, 0x3623, 65, 66);
var_dump(unpack("c2chars/n2int", $binary_data));
?>
Output:
array(4) {
["chars1"]=>
int(52)
["chars2"]=>
int(35)
["int1"]=>
int(65)
["int2"]=>
int(66)
}
Example 3: This example uses i format to unpack the data from binary string.
php
<?php
$binary_data = pack("i3", 56, 49, 54);
var_dump(unpack("i3", $binary_data));
?>
Output:
array(3) {
[1]=>
int(56)
[2]=>
int(49)
[3]=>
int(54)
}
Reference: https://www.php.net/manual/en/function.unpack.php