Générer un fichier binaire avec structure donnée
-
25-09-2019 - |
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?
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