PHP unpack() -Funktion

Definition und Verwendung

Die unpack() -Funktion entpackt Daten aus binären Zeichenketten.

Syntax

unpack(format,data)
Parameter Beschreibung
format notwendig. Bestimmt das Format, das bei der Entpackung der Daten verwendet wird.
data optional. Bestimmt die zu entpackenden binären Daten.

mögliche Werte für das Parameterformat:

  • a - mit NUL aufgefüllte Zeichenkette
  • A - mit Leerzeichen aufgefüllte Zeichenkette
  • h - Hex-Zeichenkette, niedriger Nibble zuerst
  • H - Hex-Zeichenkette, hoher Nibble zuerst
  • c - signed char
  • C - unsigned char
  • s - signed short (immer 16 Bit, Maschinenbyte-Reihenfolge)
  • S - unsigned short (immer 16 Bit, Maschinenbyte-Reihenfolge)
  • n - unsigned short (immer 16 Bit, Big-Endian Byte-Reihenfolge)
  • v - unsigned short (immer 16 Bit, Little-Endian Byte-Reihenfolge)
  • i - signed integer (maschinenabhängige Größe und Byte-Reihenfolge)
  • I - unsigned integer (maschinenabhängige Größe und Byte-Reihenfolge)
  • l - signed long (immer 32 Bit, Maschinenbyte-Reihenfolge)
  • L - unsigned long (immer 32 Bit, Maschinenbyte-Reihenfolge)
  • N - unsigned long (immer 32 Bit, big endian Byte-Reihenfolge)
  • V - unsigned long (immer 32 Bit, little endian Byte-Reihenfolge)
  • f - float (maschinenabhängige Größe und Darstellung)
  • d - double (maschinenabhängige Größe und Darstellung)
  • x - NUL Byte
  • X - Ein Byte zurückgehen
  • @ - NUL-auffüllen bis zur absoluten Position

Beispiel

Beispiel 1

<?php
$data = "PHP";
print_r(unpack("C*",$data));
?>

Ausgabe:

Array
(
[1] => 80
[2] => 72
[3] => 80
)

Beispiel 2

<?php
$data = "PHP";
print_r(unpack("C*myint",$data));
?>

Ausgabe:

Array
(
[myint1] => 80
[myint2] => 72
[myint3] => 80
)

Beispiel 3

<?php
$bin = pack("c2n2",0x1234,0x5678,65,66);
print_r(unpack("c2chars/n2int",$bin));
?>

Ausgabe:

Array
(
[chars1] => 52
[chars2] => 120
[int1] => 65
[int2] => 66
)