Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

pack

Оглавление

pack

(PHP 3, PHP 4)

pack - упаковывает данные в бинарную строку.

Описание

string pack (string format [, mixed args])

Упаковывает данные аргументы в бинарную строку в соответствии с форматом format. Возвращает бинарную строку с данными.

Идея этой функции была взята из Perl, и весь код форматирования работает аналогично, однако отсутствуют некоторые коды форматирования, такие как Perl'овский "u". Строка форматирования состоит из кодов форматирования и последующего необязательного аргумента повторения/repeater. Аргумент repeater может быть целочисленным или * для повторения до конца данных ввода. Для a, A, h, H повторение специфицирует, сколько символов аргумента data принимается, для @ это абсолютная позиция для размещения следующих данных, для других параметров повторение специфицирует, сколько аргументов данных употребляется и упаковывается в результирующую бинарную строку. В настоящее время реализованы:

  • строка с NUL-заполнением

  • строка со SPACE-заполнение

  • h Hex-строка, сначала нижний разряд

  • H Hex-строка, сначала высший разряд

  • c знаковый char

  • C беззнаковый char

  • s знаковый short (всегда 16 бит, машинный байтовый порядок)

  • S беззнаковый short (всегда 16 бит, машинный байтовый порядок)

  • n беззнаковый short (всегда 16 бит, байтовый порядок big endian)

  • v беззнаковый short (всегда 16 бит, байтовый порядок little endian)

  • i signed integer (машиннозависимый размер и байтовый порядок)

  • I беззнаковый integer (машиннозависимый размер и байтовый порядок)

  • l signed long (всегда 32 бита, машинный байтовый порядок)

  • L беззнаковый long (всегда 32 бита, машинный байтовый порядок)

  • N беззнаковый long (всегда 32 бита, байтовый порядок big endian)

  • V беззнаковый long (всегда 32 бита, байтовый порядок little endian)

  • f float (машиннозависимый размер и представление)

  • d double (машиннозависимый размер и представление)

  • x NUL байт

  • X обратно на один байт

  • @ NUL-заполнение до абсолютной позиции

Пример 1. Строка форматирования pack()
$binarydata = pack ("nvc*", 0x1234, 0x5678, 65, 66);

Результирующая бинарная строка имеет длину 6 байт и содержит байтовую последовательность 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

Обратите внимание, что отличие между знаковым и беззнаковым значением влияет только на функцию unpack(), а функция pack() даёт одинаковые результаты для знакового и беззнакового кода формата.

Отметьте также, что PHP внутренне хранит значения integer как знаковые значения машиннозависимого размера. Если вы задаёте значение как беззнаковое integer, слишком большое, чтобы хранить его таким способом, оно конвертируется во float, что часто приводит к непредсказуемым результатам.


Оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог