Analyser un fichier binaire en PHP

Les fichiers de données de code binaire sont utilisés pour programmer dans des langages de programmation de bas niveau utilisés de manière scientifique, comme C, qui ne peuvent pas être traduits de manière cohérente au format texte.

En utilisant n'importe quel langage de bas niveau pour stocker une valeur donnée, le code binaire doit être utilisé une fois que vous l'avez chargé dans un éditeur de texte pour l'enregistrer ou le lire.

Un fichier binaire ne peut pas être lu car il est au format binaire brut dans des langages comme Pascal. Par conséquent, les webmasters utilisent PHP pour lire et écrire les fichiers sous forme de texte. Une fonction spécifique doit être utilisée pour récupérer vos valeurs.

PHP utilise une fonction unique appelée unpack (). Une fois le premier argument de type de données déclaré, vous devez récupérer et créer un second argument en tant que chaîne à partir de laquelle vous souhaitez extraire les données. Les données récupérables doivent être dans des arguments symboliques.

Lorsque vous utilisez des langages de bas niveau tels que C ou Pascal, le stockage de données dans un fichier binaire (enregistrement qui ne peut pas être traduit en texte) est une procédure courante.

En utilisant le langage C, si vous souhaitez enregistrer la valeur 500 dans un fichier, le code sera le suivant:

 #include int main () {int val = 500; FILE * fp = fopen ("fichier", "wb"); fwrite (& val, sizeof (int), 1, fp); // stocke val dans "fichier" fclose (fp); retourne 0; } 

Lors de l'ouverture de ce fichier particulier avec un éditeur de texte, vous pouvez le trouver illisible car votre valeur n'est pas enregistrée en tant que texte mais sous sa forme brute binaire.

Mais, si vous utilisez PHP, il est souvent nécessaire de récupérer de temps en temps des valeurs stockées sous forme binaire. Cependant, PHP lit et écrit dans les fichiers sous forme de texte. Une fonction spécifique doit être utilisée pour récupérer vos valeurs.

La solution:

La fonction unpack () peut être utilisée pour résoudre ce genre de problème. Vous devez d'abord déclarer le type de données que vous souhaitez récupérer, puis la chaîne à partir de laquelle vous souhaitez récupérer les données.

Le type de données à récupérer doit être détaillé à l'aide du symbole correspondant. Par exemple, pour récupérer un entier signé, utilisez le caractère i .

Donc, si nous utilisons le fichier que nous avons enregistré dans l'exemple ci-dessus, voici le code permettant de récupérer notre valeur:

    • Notes IMPORTANTES:
  • La taille des données peut varier en fonction de l'architecture du processeur (Sparc, ARM, PowerPC).
    • Un programme écrit en C utilise des entiers de tailles différentes, allant de 32 bits à 64 bits.
    • La disposition des données peut ne pas être la même. Certaines machines stockent des données en Big Endian, d'autres en Little Endian.
    • La taille des données peut varier en fonction du compilateur
    • La fonction unpack renvoie un tableau un peu plus élaboré que celui donné en exemple ici. Dans notre cas, avec une valeur demandée, notre valeur est en décalage 1 du tableau.
  • Types de données pour un PC 32 bits
    • Voici un tableau montrant les données enregistrées par un programme C compilé pour un PC 32 bits:
    • char : c
    • caractère non signé : C
    • court : s
    • court non signé : S
    • int : je
    • unsigned int : L
    • float : f
    • double : d

Article Précédent Article Suivant

Les Meilleurs Conseils