unpack

(PHP 4, PHP 5, PHP 7, PHP 8)

unpack — Розпакувати дані з бінарного рядка

Опис

unpack(string $format, string $string, int $offset = 0): array|false

Розпаковує дані з бінарного рядка в масив відповідно до заданого в formatформате.

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

Для підтримки сумісності з Perl зроблено таке:

  • Код "a" тепер зберігає завершальні NULL-байти.
  • Код "A" тепер видаляє всі завершальні пробіли ASCII (пробіли, табуляцію, переноси рядків, повернення каретки, і NULL-байти).
  • Код "Z" доданий для NULL-доповнених рядків і видаляє завершальні NULL-байти.

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

format

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

string

Запаковані дані.

offset

Зміщення, з якого необхідно розпочати розпакування.

Значення, що повертаються

Повертає асоціативний масив, що містить розпаковані елементи бінарного рядка або **false**в случае возникновения ошибки.

список змін

ВерсияОпис
7.2.0Типи float і double підтримують як зворотний, і прямий порядок передачі байтів.
7.1.0Додано необов'язковий параметр offset

Приклади

Приклад #1 Приклад використання unpack()****

Loading...

Результат виконання наведеного прикладу:

Array
(
    [chars] => 4
    [int] => 160
)

Приклад #2 Приклад використання unpack()** із заміщувальним аргументом**

Loading...

Результат виконання наведеного прикладу:

Array
(
    [chars1] => 4
    [chars2] => 0
    [int] => 40960
)

Примітки

Застереження

PHP зберігає цілі значення зі знаком (signed). Якщо розпакувати значення типу large unsigned long і воно матиме той самий розмір, що і PHP, то результатом буде негативне число, навіть якщо було вказано розпаковувати без знака (unsigned).

Застереження

Якщо не назвати елемент, то будуть використані числові індекси, починаючи з . Якщо не позначити більше одного елемента, це означає, що деякі дані будуть перезаписані, так як нумерація перезапускається з для кожного елемента.

Приклад #3 Приклад використання unpack()** з безіменними ключами**

Loading...

Результат виконання наведеного прикладу:

array(2) {
  [1]=>
  int(160)
  [2]=>
  int(66)
}

Обратите внимание, что первое значение из спецификатораc перезаписується першим значенням із специфікатора n

Дивіться також

  • pack() - Упакувати дані у бінарний рядок