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() - Упакувати дані у бінарний рядок