Распаковывает данные из бинарной строки


(PHP 4, PHP 5)

unpackРаспаковывает данные из бинарной строки

Описание

array unpack ( string $format , string $data )

Распаковывает данные из бинарной строки в массив согласно заданному в format формату.

Распакованные данные хранятся в ассоциативном массиве. Для осуществления этого необходимо обозначить различные коды форматов и разделить их с помощью слэш /. Можно также передать замещающий аргумент, с помощью которого каждый ключ массива будет иметь порядковый номер после обозначенного имени ключа.

Список параметров

format

См. функцию pack() для разъяснения кодов форматов.

data

Упакованные данные.

Возвращаемые значения

Возвращает ассоциативный массив, содержащий распакованные элементы бинарной строки.

Список изменений

Версия Описание
5.5.0

Для поддержания совместимости с Perl сделано следующее:

Код "a" теперь сохраняет завершающие NULL байты.

Код "A" теперь удаляет все завершающие ASCII пробельные символы (пробелы, табуляцию, переносы строк, возврат каретки, и NULL байты).

Код "Z" добавлен для NULL-дополненными строками, и удаляет завершающие NULL байты.

Примеры

Пример #1 Пример использования unpack()

<?php
$binarydata 
"\x04\x00\xa0\x00";
$array unpack("cchars/nint"$binarydata);
?>

Результирующий массив будет содержать записи "chars" со значением 4 и "int" с 160.

Пример #2 Пример использования unpack() с замещающим аргументом

<?php
$binarydata 
"\x04\x00\xa0\x00";
$array unpack("c2chars/nint"$binarydata);
?>

Результирующий массив будет содержать записи "chars1", "chars2" и "int".

Примечания

Предостережение

Необходимо отметить, что PHP хранит значения как signed. Если распаковать large unsigned long и оно будет иметь тот же размер, что и хранимое PHP значение, то результатом будет отрицательное число, даже если было указано распаковывать как unsigned.

Предостережение

Если не обозначить элемент, то используется пустая строка. Если не обозначить более чем один элемент, то это значит, что некоторые данные будут перезаписаны, как например в:

Пример #3 Пример использования unpack() с безымянными ключами

<?php
$binarydata 
"\x32\x42\x00\xa0";
$array unpack("c2/n"$binarydata);
var_dump($array);
?>

Результирующий массив будет содержать записи "1" со значением 160 и "2" с 66. Первое значение из спецификатора c будет перезаписано первым значением из спецификатора n.

Смотрите также

  • pack() - Упаковывает данные в бинарную строку