Definition and usage
unpack()
function unpacks data from a binary string.
Example
Example 1
Unpack data from a binary string:
<?php
$data = "PHP" ;
print_r ( unpack ( "C*" , $data ) ) ;
?>
Try it yourself
Example 2
Unpacking data:
<?php
$data = "PHP" ;
print_r ( unpack ( "C*myint" , $data ) ) ;
?>
Try it yourself
Example 3
Unpacking data:
<?php
$bin = pack ( "c2n2" , 0x1234 , 0x5678 , 65 , 66 ) ;
print_r ( unpack ( "c2chars/n2int" , $bin ) ) ;
?>
Try it yourself
grammar
unpack ( format , data , offset )
parameter |
describe |
format
|
Required. Specifies the format used when unpacking data. |
data
|
Optional. Specifies the binary data to be unpacked. |
offset
|
Optional. Specify where to start unpacking. The default is 0. |
Possible values for format parameter:
- a - NUL-padded string
- A - SPACE-padded string
- h - Hex string, low nibble in front
- H - Hex string, high nibble in front
- c - Signed characters
- C - Unsigned characters
- s - signed short integer (always 16 bits, machine byte order)
- S - Unsigned short integer (always 16 bits, machine byte order)
- n - Unsigned short integer (always 16-bit, big-endian byte order)
- v - Unsigned short integer (always 16-bit, little-endian byte order)
- i - signed integers (machine-related size and byte order)
- I - Unsigned integers (machine-related size and byte order)
- l - signed long integer (always 32 bits, machine byte order)
- L - Unsigned long integer (always 32 bits, machine byte order)
- N - Unsigned long integer (always 32 bits, big endian byte order)
- V - Unsigned long integer (always 32 bits, little endian byte order)
- q - signed long integer (always 64 bits, machine byte order)
- Q - Unsigned long integer (always 64 bits, machine byte order)
- J - Unsigned long integer (always 64 bits, big endian byte order)
- P - Unsigned long integer (always 64 bits, little endian byte order)
- f - Floating point number (machine-related size and representation)
- g - floating point number (machine-related size, little-endian byte order)
- G - Floating point number (machine-related size, big-endian byte order)
- d - Double precision floating point number (machine-related size and representation)
- e - Double precision floating point number (machine-related size, little-endian byte order)
- E - Double precision floating point number (machine-related size, big-endian byte order)
- x - NUL bytes
- X - Rewind one byte
- Z - NUL-padded string
- @ - NUL-fill to absolute position