PHP pack()Fonctions

PHP Misc 参考手册Manuel de référence PHP Divers

Exemples

Empaqueter des données dans une chaîne binaire :

<?php
echo pack("C3",80,72,80);
?>

Exécuter l'exemple »

Définition et utilisation

La fonction pack() empaquette des données dans une chaîne binaire.

Ceci est très utile pour la transmission réseau, le traitement de fichiers et le stockage de données, en particulier lorsqu'un contrôle précis du format des données et de l'ordre des octets est nécessaire.


Syntaxe

string pack(string $format, mixed $arg1 [, mixed $arg2, ...])
  • $format: Une chaîne qui spécifie comment les arguments donnésarg1, arg2, ... sont empaquetés. Chaque caractère représente un type de données et une taille.
  • $arg1, $arg2, ... : Les données à empaqueter. Peuvent être des entiers, des flottants ou des chaînes, etc.

La fonction pack() renvoie la chaîne binaire empaquetée, ou false si une erreur se produit.


Parameters Description
format Obligatoire. Spécifie le format utilisé lors de l'empaquetage des données.

Valeurs possibles :

Entiers:

  • c: char signé (1 octet).
  • C: unsigned char (1 octet).
  • s: entier court signé (2 octets, ordre des octets de l'hôte).
  • S: entier court non signé (2 octets, ordre des octets de l'hôte).
  • l: entier long signé (4 octets, ordre des octets de l'hôte).
  • L: entier long non signé (4 octets, ordre des octets de l'hôte).
  • q: entier long long signé (8 octets, ordre des octets de l'hôte).
  • Q: entier long long non signé (8 octets, ordre des octets de l'hôte).

Nombres à virgule flottante:

  • f: nombre à virgule flottante en simple précision (4 octets, ordre des octets de l'hôte).
  • d: nombre à virgule flottante en double précision (8 octets, ordre des octets de l'hôte).

Chaînes de caractères et autres types:

  • x: octet NUL (octet de remplissage, aucun argument).
  • a: chaîne terminée par NUL (prend l'argument comme une chaîne).
  • A: chaîne complétée par des espaces (prend l'argument comme une chaîne).
  • @: octets NUL complétés à une longueur spécifiée.
args+ Facultatif. Spécifie un ou plusieurs arguments à empaqueter.

Détails techniques

Valeur de retour : Retourne une chaîne binaire contenant les données.
Version PHP : 4+
Journal des modifications : Le code « Z » a été ajouté dans PHP 5.5 et a la même fonctionnalité que « a », utilisé pour la compatibilité Perl.


Plus d’exemples

Voici quelques exemples utilisant la fonction pack().

Empaqueter un entier court non signé et une chaîne :

Exemple

$data = pack('S', 65535); // Empaqueter un entier court non signé 65535
echo bin2hex($data); // Sortie : ffff

Empaqueter un entier long signé et une chaîne :

Exemple

$data = pack('l', -2147483648); // Empaqueter un entier long signé -2147483648
echo bin2hex($data); // Sortie : 0000000080000000

Empaqueter un float et une chaîne :

Exemple

$data = pack('f', 3.14); // Empaqueter un float 3.14
echo bin2hex($data); // Sortie : 4048f5c3

Notes

  • pack()La fonction est un outil puissant pour convertir des données dans un format binaire, mais vous devez vous assurer que vous comprenez la signification et l'utilisation de chaque caractère dans le format requis.
  • Problème d'endianness (ordre des octets) : Sur différents systèmes, les entiers et les nombres à virgule flottante peuvent être représentés différemment. Vous pouvez utiliserpack()etunpack()la fonction pour garantir une transmission et une analyse correctes des données entre différents systèmes.
  • Vous pouvez utiliserbin2hex()la fonction pour convertir des données binaires en une chaîne hexadécimale pour la sortie et le débogage.
PHP Misc 参考手册Manuel de référence PHP divers Autres extensions