Важные справочники к ночным пляскам с бубном:)  

  СПРАВОЧНИК PHP

Другие функции

pack()

Пакетирование данных в двоичную строку.

Синтаксис:

Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем и возвращается. Формат параметров, а также их количество, задается при помощи строки $format, которая представляет собой набор однобуквенных спецификаторов форматирования - наподобие тех, которые указываются в sprintf(), но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a,A,h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находится в очередном параметре-строке при вызове функции (то есть, определяет размер поля для вывода строки). В случае @ оно определяет абсолютную позицию, в которую будут помещены следующие данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае подразумевается, что спецификатор действует на все оставшиеся данные.

Вот полный список спецификаторов формата:

a - строка, свободные места в поле заполняются символом с кодом 0; A - строка, свободные места заполняются пробелами; h - шестнадцатиричная строка, младшие разряды в начале; H - шестнадцатиричная строка, старшие разряды в начале; c - знаковый байт (символ); C - без знаковый байт; s - знаковое короткое целое (16 битов порядок байтов определяется архитектурой процессора); S - беззнаковое короткое число; n - беззнаковое целое (16 битов, старшие разряды в конце); v - беззнаковое целое (16 битов, младшие разряды в конце); i - знаковое целое (размер и порядок байтов определяется архитектурой); I - беззнаковое целое; l - знаковое длинное целое (32 бита, порядок знаков определяется архитектурой); L - беззнаковое длинное целое; N - беззнаковое длинное целое (32 бита, старшие разряды в конце); V - беззнаковое целое (32 бита, младшие разряды в конце); f - число с плавающей точкой (зависит от архитектуры); d - число с плавающей точкой двойной точности (зависит от архитектуры); x - символ с нулевым кодом; X - возврат назад на 1 байт; @ - заполнение нулевым кодом до заданной абсолютной позиции.

// Целое, целое, все остальное - сиволы $bindata = pack("nvc*", 0x1234, 0x5678, 65, 66);

После выполнения приведенного кода в строке $bindata будет содержаться 6 байтов в такой последовательности: 0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатиричной системе счисления).

script© 16valve.ru version 1.0 2016