Функция unpack() в PHP
Определение и использование
Функция unpack() декомпилирует данные из бинарной строки.
Синтаксис
unpack(format,data)
Параметр | Описание |
---|---|
format | Обязателен. Определяет формат, используемый при unpacking данных. |
data | Опционально. Определяет unpacked бинарные данные. |
Возможные значения параметра format:
- a - NUL-заполненная строка
- A - SPACE-заполненная строка
- h - Hex string, сначала низкий nibble
- H - Hex string, сначала высокий nibble
- c - signed char
- C - unsigned char
- s - signed short (всегда 16 бита, машинный порядок байт)
- S - unsigned short (всегда 16 бита, машинный порядок байт)
- n - unsigned short (всегда 16 бита, большой порядок байт)
- v - unsigned short (всегда 16 бита, малый порядок байт)
- i - signed integer (в зависимости от машины размер и порядок байт)
- I - unsigned integer (в зависимости от машины размер и порядок байт)
- l - signed long (всегда 32 бита, машинный порядок байт)
- L - unsigned long (всегда 32 бита, машинный порядок байт)
- N - unsigned long (всегда 32 bit, порядок байт big endian)
- V - unsigned long (всегда 32 bit, порядок байт little endian)
- f - плавающая точка (машинозависимый размер и представление)
- d - двойное (машинозависимый размер и представление)
- x - Нулевой байт
- X - Возврат на один байт
- @ - Нулевое заполнение до абсолютной позиции
Пример
Пример 1
<?php $data = "PHP"; print_r(unpack("C*",$data)); ?>
Вывод:
Массив ( [1] => 80 [2] => 72 [3] => 80 )
Пример 2
<?php $data = "PHP"; print_r(unpack("C*myint",$data)); ?>
Вывод:
Массив ( [myint1] => 80 [myint2] => 72 [myint3] => 80 )
Пример 3
<?php $bin = pack("c2n2",0x1234,0x5678,65,66); print_r(unpack("c2chars/n2int",$bin)); ?>
Вывод:
Массив ( [chars1] => 52 [chars2] => 120 [int1] => 65 [int2] => 66 )