unpack
Description
The unpack of Miscellaneous for PHP unpack data from binary string.
Syntax
unpack( string $format, string $string, int $offset = 0 ): array|false
Parameters
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 )