unpack
Description
The unpack of Miscellaneous for PHP unpack data from binary string.
Syntax
unpack(
string $format,
string $string,
int $offset = 0
): array|falseParameters
format
The format string consists of format codes followed by an optional repeater argument. The repeater argument can be either an integer value or * for repeating to the end of the input data. For a, A, h, H the repeat count specifies how many characters of one data argument are taken, for @ it is the absolute position where to put the next data, for everything else the repeat count specifies how many data arguments are consumed and packed into the resulting binary string.
| Code | Description |
|---|---|
| a | NUL-padded string |
| A | SPACE-padded string |
| c | signed char |
| C | unsigned char |
| d | double (machine dependent size and representation) |
| e | double (machine dependent size, little endian byte order) |
| E | double (machine dependent size, big endian byte order) |
| f | float (machine dependent size and representation) |
| g | float (machine dependent size, little endian byte order) |
| G | float (machine dependent size, big endian byte order) |
| h | Hex string, low nibble first |
| H | Hex string, high nibble first |
| i | signed integer (machine dependent size and byte order) |
| I | unsigned integer (machine dependent size and byte order) |
| J | unsigned long long (always 64 bit, big endian byte order) |
| l | signed long (always 32 bit, machine byte order) |
| L | unsigned long (always 32 bit, machine byte order) |
| n | unsigned short (always 16 bit, big endian byte order) |
| N | unsigned long (always 32 bit, big endian byte order) |
| P | unsigned long long (always 64 bit, little endian byte order) |
| q | signed long long (always 64 bit, machine byte order) |
| Q | unsigned long long (always 64 bit, machine byte order) |
| s | signed short (always 16 bit, machine byte order) |
| S | unsigned short (always 16 bit, machine byte order) |
| v | unsigned short (always 16 bit, little endian byte order) |
| V | unsigned long (always 32 bit, little endian byte order) |
| x | NUL byte |
| X | Back up one byte |
| Z | NUL-padded string |
| @ | NUL-fill to absolute position |
string
The packed data.
offset
The offset to begin unpacking from.
Return
Returns an associative array containing unpacked elements of binary string, or false on failure.
Examples
1 · format string
<? $format = "cchars/nint"; $string = "\x04\x00\xa0\x00"; $return = unpack($format, $string); print_r($return);
Array
(
[chars] => 4
[int] => 160
)
2 · format string · repeater
<? $format = "c2chars/nint"; $string = "\x04\x00\xa0\x00"; $return = unpack($format, $string); print_r($return);
Array
(
[chars1] => 4
[chars2] => 0
[int] => 40960
)
3 · offset
<? $format = "cchars/nint"; $string = "\x04\x00\xa0\x00"; $offset = 1; $return = unpack($format, $string, $offset); print_r($return);
Array
(
[chars] => 0
[int] => 40960
)