Función unpack() de PHP

Definición y uso

La función unpack() desempaqueta datos de una cadena binaria.

Sintaxis

unpack(format,data)
Parámetro Descripción
format Obligatorio. Define el formato utilizado para desempaquetar los datos.
data Opcional. Define los datos binarios desempaquetados.

Valores posibles de 'format':

  • a - Cadena rellena con NUL
  • A - Cadena rellena con espacios
  • h - Cadena hexadecimal, nibble bajo primero
  • H - Cadena hexadecimal, nibble alto primero
  • c - signed char
  • C - unsigned char
  • s - signed short (siempre 16 bits, orden de bytes de la máquina)
  • S - unsigned short (siempre 16 bits, orden de bytes de la máquina)
  • n - unsigned short (siempre 16 bits, orden de bytes big endian)
  • v - unsigned short (siempre 16 bits, orden de bytes little endian)
  • i - signed integer (tamaño y orden de bytes dependientes de la máquina)
  • I - unsigned integer (tamaño y orden de bytes dependientes de la máquina)
  • l - signed long (siempre 32 bits, orden de bytes de la máquina)
  • L - unsigned long (siempre 32 bits, orden de bytes de la máquina)
  • N - unsigned long (siempre 32 bits, orden de bytes big endian)
  • V - unsigned long (siempre 32 bits, orden de bytes little endian)
  • f - float (tamaño y representación dependientes de la máquina)
  • d - double (tamaño y representación dependientes de la máquina)
  • x - Byte NUL
  • X - Retroceder un byte
  • @ - Relleno NUL hasta la posición absoluta

Ejemplo

Ejemplo 1

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

Salida:

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

Ejemplo 2

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

Salida:

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

Ejemplo 3

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

Salida:

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