Функция 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
)