W3docs

unpack()

In this article, we will focus on the PHP unpack() function. We will provide you with an overview of the function, how it works, and examples of its use.

В этой статье мы сосредоточимся на функции PHP unpack(). Мы предоставим вам обзор функции, принцип её работы и примеры использования.

Введение в функцию unpack()

Функция unpack() — это встроенная функция PHP, предназначенная для распаковки бинарных данных в переменные PHP. Это мощный инструмент, который можно использовать для извлечения данных из бинарных файлов или сетевых протоколов.

Функция unpack() принимает два аргумента: формат распаковываемых бинарных данных и сами бинарные данные.

Как использовать функцию unpack()

Использование функции unpack() очень просто. Вам нужно лишь вызвать функцию и передать формат распаковываемых бинарных данных и сами данные. Вот пример:

Как использовать функцию unpack()?

<?php
$data = "\x01\x02\x03\x04\x05";
$result = unpack("C*", $data);
print_r($result);
?>

В этом примере у нас есть строка бинарных данных $data, содержащая байты \x01\x02\x03\x04\x05. Затем мы вызываем функцию unpack() со строкой формата "C*", которая указывает функции распаковать данные как массив беззнаковых символов. Символ * используется для обозначения того, что мы хотим распаковать все данные. Если в строке формата не указаны ключи, unpack() возвращает массив с числовыми ключами, начиная с 1. Мы присваиваем полученный массив переменной $result, а затем выводим содержимое массива с помощью print_r().

Результат выполнения этого скрипта будет следующим:


Array
(
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
)

Это демонстрирует, что функция unpack() успешно распаковала бинарные данные в массив беззнаковых символов.

Расширенное использование

Функцию unpack() также можно использовать в более сложных сценариях. Например, вы можете использовать её для распаковки данных в переменные разных типов PHP. Вот пример:

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

<?php
$data = "\x01\x02\x03\x04\x05\x06\x07\x08";
$result = unpack("C2chars/Sint/Nlong", $data);
print_r($result);
?>

В этом примере у нас есть строка бинарных данных $data, содержащая байты \x01\x02\x03\x04\x05\x06\x07\x08. Затем мы вызываем функцию unpack() со строкой формата "C2chars/Sint/Nlong". Это указывает функции распаковать первые два байта в ключи chars1 и chars2, следующие два байта в int, а последние четыре байта в long. Обратите внимание, что порядок байтов целых чисел зависит от архитектуры системы. По умолчанию S использует системный порядок байтов, а N принудительно устанавливает порядок big-endian. Чтобы обеспечить согласованные результаты на разных системах, вы можете добавить явные модификаторы порядка байтов (например, V для little-endian, n для сетевого/big-endian) к спецификаторам формата. Мы присваиваем полученный массив переменной $result, а затем выводим содержимое массива с помощью print_r().

Результат выполнения этого скрипта будет следующим:


Array
(
    [chars1] => 1
    [chars2] => 2
    [int] => 1027
    [long] => 84281096
)

Это демонстрирует, что функция unpack() успешно распаковала бинарные данные в массив переменных разных типов PHP.

Заключение

Подводя итог, функция unpack() — это мощный инструмент для распаковки бинарных данных в переменные PHP. Понимая, как использовать функцию и её расширенные возможности, вы сможете извлекать данные из бинарных файлов или сетевых протоколов в своих PHP-скриптах.

Практика

Практика

Что делает функция PHP 'unpack'?