Maison  >  Article  >  développement back-end  >  Comment convertir des données binaires en tableau d'octets en php

Comment convertir des données binaires en tableau d'octets en php

PHPz
PHPzoriginal
2023-04-18 14:10:27731parcourir

En développement, nous devons souvent transmettre des données sous forme binaire. À ce stade, nous devons convertir les données binaires en un tableau d'octets afin que les données puissent être transmises de manière plus stable et efficace pendant le processus de transmission. En PHP, le moyen d'obtenir cette fonction consiste à utiliser la fonction pack et la fonction unpack. Apprenons-les ensemble.

  1. fonction pack

La fonction pack est une fonction d'empaquetage de données binaires en php. Elle peut regrouper les données spécifiées dans une chaîne binaire selon le format spécifié. Parmi eux, les paramètres de chaîne de format sont spécifiés en fonction de l'ordre des octets à compresser, et chaque caractère de format correspond à un type de données. Voici l'utilisation de base de la fonction pack :

string pack ( string $format [, mixed $args [, mixed $... ]] )

Parmi eux, le paramètre $format est la chaîne de format et $args les données qui doivent être compressées.

Ce qui suit est un exemple pour illustrer l'utilisation de la fonction pack :

$binary_str = pack("C*", 67, 119, 105, 107, 105);
echo $binary_str;

Dans cet exemple, la chaîne de format "C*" signifie un emballage par caractères, et les paramètres args sont 67, 119, 105, 107, 105. Le résultat de l'exécution est :

Cwiki

C'est-à-dire que la chaîne composée du tableau de caractères 67, 119, 105, 107, 105 est compressée en mode caractère et la chaîne "Cwiki" est renvoyée.

En plus de la méthode des caractères, la fonction pack prend également en charge une variété d'autres méthodes d'emballage, telles que l'entier (I), l'entier long (L), la double précision (d), etc. Voici quelques caractères de format couramment utilisés :

  • a : chaîne terminée par un caractère nul
  • A : chaîne remplie d'espaces
  • c : caractère signé
  • C : caractère non signé
  • s : court signé (toujours 16 bits, machine ordre des octets)
  • S : court non signé (toujours 16 bits, ordre des octets machine)
  • n : court non signé (toujours 16 bits, ordre des octets big endian)
  • v : court non signé (toujours 16 bits, ordre des octets small endian)
  • i : entier signé (taille et ordre des octets dépendant de la machine)
  • I : entier non signé (taille et ordre des octets dépendant de la machine)
  • l : long signé (toujours 32 bits, ordre des octets de la machine)
  • L : long non signé ( toujours 32 bits, ordre des octets machine)
  • N : long non signé (toujours 32 bits, ordre des octets big endian)
  • V : long non signé (toujours 32 bits, ordre des octets small endian)
  • f : float (taille et ordre dépendant de la machine) représentation)
  • d : double (taille et représentation dépendant de la machine)
  1. fonction de décompression

La fonction de décompression est une fonction de décompression de données binaires en php. Elle peut décompresser des chaînes de données binaires dans un type de données spécifié. Comme la fonction pack, nous pouvons décompresser les données binaires en variables représentant différents types de données en spécifiant les paramètres de chaîne de format et les chaînes de données. Voici l'utilisation de base de la fonction de décompression :

array unpack ( string $format , string $data )

Parmi eux, le paramètre $format est la chaîne de format et $data est les données qui doivent être décompressées.

Ce qui suit est un exemple pour illustrer l'utilisation de la fonction unpack :

$binary_str = "Cwiki";
$unpacked = unpack("C*",$binary_str);
print_r($unpacked);

Dans cet exemple, $binary_str est la chaîne de données binaires "Cwiki", et le paramètre $format est "C*", ce qui signifie le déballage en caractère mode. Le résultat de l'exécution est :

Array
(
    [1] => 67
    [2] => 119
    [3] => 105
    [4] => 107
    [5] => 105
)

Autrement dit, la chaîne de données binaires "Cwiki" est décompressée en mode caractère et un tableau représentant différents caractères est obtenu.

En plus de la méthode des caractères, la fonction unpack prend également en charge diverses autres méthodes de décompression. La correspondance entre les caractères de format et les caractères de format de la fonction pack est biunivoque.

En résumé, grâce à l'utilisation combinée de la fonction pack et de la fonction unpack, nous pouvons convertir n'importe quelle donnée en une chaîne binaire et décompresser divers types de données de la chaîne binaire, réalisant ainsi la conversion binaire PHP en une fonction de tableau d'octets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn