Fonction unpack() en PHP

Définition et utilisation

La fonction unpack() dépaquette les données à partir de la chaîne binaire.

Syntaxe

unpack(format,data)
Paramètres Description
format Obligatoire. Définit le format utilisé pour dépaqueter les données.
data Optionnel. Définit les données binaires dépaquetées.

Les valeurs possibles du paramètre format :

  • a - Chaîne alignée à la NUL
  • A - Chaîne alignée à l'espace
  • h - Chaîne hexadécimale, le plus bas quartet en premier
  • H - Chaîne hexadécimale, le plus haut quartet en premier
  • c - signed char
  • C - unsigned char
  • s - signed short (toujours 16 bits, ordre des octets du processeur)
  • S - unsigned short (toujours 16 bits, ordre des octets du processeur)
  • n - unsigned short (toujours 16 bits, ordre des octets en ordre supérieur)
  • v - unsigned short (toujours 16 bits, ordre des octets en ordre inférieur)
  • i - signed integer (taille et ordre des octets dépendants de l'ordinateur)
  • I - unsigned integer (taille et ordre des octets dépendants de l'ordinateur)
  • l - signed long (toujours 32 bits, ordre des octets du processeur)
  • L - unsigned long (toujours 32 bits, ordre des octets du processeur)
  • N - unsigned long (toujours 32 bits, ordre des octets de grand à petit)
  • V - unsigned long (toujours 32 bits, ordre des octets de petit à grand)
  • f - float (taille et représentation machine dépendantes)
  • d - double (taille et représentation machine dépendantes)
  • x - Octet NUL
  • X - Sauvegarde d'un octet
  • @ - Remplissage NUL à la position absolue

Exemple

Exemple 1

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

Sortie :

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

Exemple 2

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

Sortie :

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

Exemple 3

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

Sortie :

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