Funkcja unpack() w PHP
Definicja i użycie
Funkcja unpack() rozpakowuje dane z ciągów binarnych.
Gramatyka
unpack(format,data)
Parametr | Opis |
---|---|
format | Wymagane. Określa format używany do unpackowania danych. |
data | Opcjonalne. Określa unpackowane dane binarne. |
Możliwe wartości parametru format:
- a - ciąg wypełniony NUL
- A - ciąg wypełniony spacjami
- h - ciąg hex, najpierw niższy nibble
- H - ciąg hex, najpierw wyższy nibble
- c - podpisywany char
- C - niepodpisywany char
- s - podpisywany short (zawsze 16 bit, kolejność bajtów maszyny)
- S - niepodpisywany short (zawsze 16 bit, kolejność bajtów maszyny)
- n - niepodpisywany short (zawsze 16 bit, duża kolejność bajtów)
- v - niepodpisywany short (zawsze 16 bit, mała kolejność bajtów)
- i - podpisywany integer (rozmiar zależny od maszyny i kolejność bajtów)
- I - niepodpisywany integer (rozmiar zależny od maszyny i kolejność bajtów)
- l - podpisywany long (zawsze 32 bity, kolejność bajtów maszyny)
- L - niepodpisywany long (zawsze 32 bity, kolejność bajtów maszyny)
- N - unsigned long (zawsze 32 bit, duży endianness)
- V - unsigned long (zawsze 32 bit, mały endianness)
- f - float (rozmiar i reprezentacja zależne od maszyny)
- d - podwójna (rozmiar i reprezentacja zależne od maszyny)
- x - bajt NUL
- X - cofnij o jeden bajt
- @ - wypełnienie NUL do absolutnej pozycji
Przykład
Przykład 1
<?php $data = "PHP"; print_r(unpack("C*",$data)); ?>
Wynik:
Array ( [1] => 80 [2] => 72 [3] => 80 )
Przykład 2
<?php $data = "PHP"; print_r(unpack("C*myint",$data)); ?>
Wynik:
Array ( [myint1] => 80 [myint2] => 72 [myint3] => 80 )
Przykład 3
<?php $bin = pack("c2n2",0x1234,0x5678,65,66); print_r(unpack("c2chars/n2int",$bin)); ?>
Wynik:
Array ( [chars1] => 52 [chars2] => 120 [int1] => 65 [int2] => 66 )