unpack
funkcja
Rozpakowuje binarny string do tablicy wartości PHP według formatki. Odwrotność pack().
unpack(string $format, string $string, int $offset = 0): array|false
unpack odczytuje binarny string i zwraca tablicę wartości PHP według formatki — jest odwrotnością pack. Każdy element formatki może mieć nazwę po literze typu (np. 'nport'), co staje się kluczem w wynikowej tablicy. Parametr $offset pozwala pominąć bajty na początku stringa. Funkcja zwraca false gdy formatka jest nieprawidłowa lub string jest zbyt krótki.
<?php
declare(strict_types=1);
// Odczyt 16-bitowego unsigned int big-endian
$bin = pack('n', 1234);
$wynik = unpack('nval', $bin);
var_dump($wynik); // wynik: array(1) { ["val"]=> int(1234) }
// Odczyt wielu pól naraz
$bin = pack('nCCa5', 80, 72, 84, 'Hello');
$pola = unpack('nport/Cmajor/Cminor/a5text', $bin);
// wynik: ['port' => 80, 'major' => 72, 'minor' => 84, 'text' => 'Hello']
// Wielokrotny element: 'C3' odczytuje 3 unsigned chars
$bin = pack('C3', 10, 20, 30);
$bajty = unpack('C3b', $bin);
// wynik: ['b1' => 10, 'b2' => 20, 'b3' => 30]