(PHP 4, PHP 5, PHP 7)
pack — Упаковывает данные в бинарную строку
   Упаковывает заданные аргументы в бинарную строку согласно формату в параметре
   format. 
  
Идея этой функции была заимствована из Perl и все коды форматирования работают также. Однако, есть некоторые отсутствующие коды форматирования, как, к примеру, код формата Perl "u".
Необходимо иметь ввиду, что отличие между знаковыми и беззнаковыми значениями влияет только на unpack() функцию, тогда как функция pack() дает одинаковый результат для знаковых и беззнаковых кодов формата.
format
       Параметр format задается в виде строки и состоит
       из кодов формата и опционального аргумента повторения. Аргумент может быть
       целочисленным, либо * для повторения до конца введенных
       данных. Для a, A, h, H число повторений определяет то, сколько символов
       взято от одного аргумента данных, для @ - это абсолютная позиция для размещения
       следующих данных, для всего остального число повторений определяет как много
       аргументов данных было обработано и упаковано в результирующую бинарную строку.
      
Работающие на данный момент форматы:
| Код | Описание | 
|---|---|
| a | Строка (string) с NUL-заполнением | 
| A | Строка (string) со SPACE-заполнением | 
| h | Hex-строка (Hex string), с нижнего разряда | 
| H | Hex-строка (Hex string), с верхнего разряда | 
| c | знаковый символ (char) | 
| C | беззнаковый символ (char) | 
| s | знаковый short (всегда 16 бит, машинный байтовый порядок) | 
| S | беззнаковый short (всегда 16 бит, машинный байтовый порядок) | 
| n | беззнаковый short (всегда 16 бит, порядок big endian) | 
| v | беззнаковый short (всегда 16 бит, порядок little endian) | 
| i | знаковый integer (машинно-зависимый размер и порядок) | 
| I | беззнаковый integer (машинно-зависимый размер и порядок) | 
| l | знаковый long (всегда 32 бит, машинный порядок) | 
| L | беззнаковый long (всегда 32 бит, машинный порядок) | 
| N | беззнаковый long (всегда 32 бит, порядок big endian) | 
| V | беззнаковый long (всегда 32 бит, порядок little endian) | 
| q | signed long long (всегда 64 bit, машинный порядок) | 
| Q | беззнаковый long long (всегда 64 bit, машинный порядок) | 
| J | беззнаковый long long (всегда 64 bit, порядок big endian) | 
| P | беззнаковый long long (всегда 64 bit, порядок little endian) | 
| f | float (машинно-зависимые размер и представление) | 
| d | double (машинно-зависимые размер и представление) | 
| x | NUL байт | 
| X | Резервирование одного байта | 
| Z | Строка (string) с NUL-заполнением (добавлено в PHP 5.5) | 
| @ | NUL-заполнение до абсолютной позиции | 
args
Возвращает бинарную строку, содержащую данные.
| Версия | Описание | 
|---|---|
| 5.6.3 | Добавлены коды "q", "Q", "J" и "P" для поддержки 64-bit чисел. | 
| 5.5.0 | Добавлен код "Z", работающий аналогично "a" для совместимости с Perl. | 
Пример #1 Пример использования pack()
<?php
$binarydata = pack("nvc*", 0x1234, 0x5678, 65, 66);
?>
Полученная бинарная строка длиной 6 байт будет содержать последовательность байтов 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.
Необходимо отметить, что PHP сохраняет значения типа integer как знаковые с машинно-зависимым размером (C тип long). Все числа, переданные как integer, но выходящие за границы этого типа будут сохранены с типом float. При упаковке этих float как integer, они будут переданы с типом integer. Это может как совпадать, так и нет с заданным шаблоном.
Наиболее частым является случай, когда упаковываются беззнаковые числа типа integer. В системах, где integer имеет размер в 32 бита, число обычно передается по тому же шаблону, как если бы integer был беззнаковым (хотя, это зависит от определенных преобразований из знаковое в беззнаковое, согласно стандарту С). В системах, где тип integer имеет размер в 64 бита, тип float не имеет мантиссы, достаточной по размеру для хранения значения без потери точности. Если эти системы также имеют простой 64-битный С тип int (большинство UNIX систем не имеют), то единственным путем для использования формата I в верхнем разряде является создание отрицательных integer значений с тем же представлением как и в определенном беззнаковом значении.