PHP | unpack () Функция

Опубликовано: 22 Февраля, 2022

Функция unpack () - это встроенная функция в PHP, которая используется для распаковки из двоичной строки в соответствующий формат.

Синтаксис:

 распаковка массива ($ формат, $ данные, $ смещение)

Параметры: эта функция принимает три параметра, как указано выше и описано ниже:

  • Формат $: обязательный параметр. Он определяет формат, который будет использоваться при упаковке данных.
    • a - обозначает строку, дополненную NUL.
    • A - обозначает строку, заполненную пробелом.
    • h - обозначает первую шестнадцатеричную строку младшего полубайта.
    • H - обозначает первую шестнадцатеричную строку с полубайтом.
    • c - обозначает знаковый символ.
    • C - обозначает беззнаковый символ.
    • s - обозначает короткое со знаком (16 бит, машинный порядок байтов).
    • S - обозначает беззнаковый короткий (16 бит, машинный порядок байтов).
    • n - обозначает беззнаковое короткое (16 бит, прямой порядок байтов).
    • v - обозначает беззнаковое короткое (16 бит, порядок байтов с прямым порядком байтов).
    • i - обозначает целое число со знаком (машинно-зависимый порядок и размер байтов).
    • I - обозначает целое число без знака (машинно-зависимый порядок и размер байтов).
    • l - обозначает длинный знак (32 бита, машинный порядок байтов).
    • L - обозначает длину без знака (32 бита, машинный порядок байтов).
    • N - обозначает длину без знака (32 бита, порядок байтов с прямым порядком байтов).
    • V - обозначает длину без знака (32 бита, порядок байтов с прямым порядком байтов).
    • f - обозначает число с плавающей запятой (машинно-зависимое представление и размер).
    • d - означает двойной (машинно-зависимое представление и размер).
    • x - обозначает нулевой байт.
    • X - означает резервное копирование одного байта.
    • Z - обозначает строку, дополненную NUL.
    • @ - обозначает NUL-заливку до абсолютной позиции.
  • $ data: Обязательный параметр. Он определяет двоичные данные, которые нужно распаковать.
  • смещение: этот параметр содержит смещение для начала распаковки.

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

Примечание: эта функция доступна для PHP 4.0.0 и более новых версий.

Example 1: This program uses C format to unpack the data from binary string.

<?php
  
var_dump( unpack("C*", "GEEKSFORGEEKS"));
?>
Output:
array(13) {
  [1]=>
  int(71)
  [2]=>
  int(69)
  [3]=>
  int(69)
  [4]=>
  int(75)
  [5]=>
  int(83)
  [6]=>
  int(70)
  [7]=>
  int(79)
  [8]=>
  int(82)
  [9]=>
  int(71)
  [10]=>
  int(69)
  [11]=>
  int(69)
  [12]=>
  int(75)
  [13]=>
  int(83)
}

Example 2:

<?php
  
$binary_data = pack("c2n2", 0x1634, 0x3623, 65, 66);
var_dump(unpack("c2chars/n2int", $binary_data));
?>
Output:
array(4) {
  ["chars1"]=>
  int(52)
  ["chars2"]=>
  int(35)
  ["int1"]=>
  int(65)
  ["int2"]=>
  int(66)
}

Example 3: This example uses i format to unpack the data from binary string.

<?php
  
$binary_data = pack("i3", 56, 49, 54);
var_dump(unpack("i3", $binary_data));
?>
Output:
array(3) {
  [1]=>
  int(56)
  [2]=>
  int(49)
  [3]=>
  int(54)
}

Ссылка: https://www.php.net/manual/en/function.unpack.php

PHP