Question

J'ai une utilisation sorcière dispositif config style de format binaire, et je dois générer que des fichiers sur la volée.

Structure de fichiers doit être composé d'un certain nombre de paramètres de configuration (1 par paramètre), chacune de la forme:

  • Type
  • Longueur
  • Valeur

où:

  • Type: est un identifiant unique octet qui définit le paramètre
  • Longueur: est un octet unique contenant la longueur de la zone de valeur en octets (non compris les champs de type et longueur)
  • Valeur est de un à 254 octets contenant la valeur spécifique du paramètre

J'ai une table correspondante

 Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }

Comment analyser cette table à ce format binaire? Et, deuxième façon, comment analyser ce fichier binaire, à php format tableau retour?

Était-ce utile?

La solution

Il y a emballez / déballer les fonctions qui peuvent se traduire entre les différents binaires / hex / octal / formats de chaîne. Lire un morceau du fichier, extraire les bits nécessaires à déballer et travailler à partir de là.

$fh = fopen('data.txt', 'rb'); // b for binary-safe

// read 2 bytes, extract code/length, then read $length more bytes to get $value
while(($data = fread($fh, 2)) !== EOF)) { 
    list($code, $length) = unpack('CC', $data);
    $data = fread($fh, $length);

    // do stuff
}
fclose($fh);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top