Generieren Binärdatei mit bestimmten Struktur
-
25-09-2019 - |
Frage
Ich habe ein Gerät Hexe Verwendung Binärformat Stil config und ich muss, dass Dateien generieren on-the-fly.
Dateistruktur muss eine Reihe von Konfigurationseinstellungen bestehen (1 pro Parameter), die jeweils die Form:
- Typ
- Länge
- Wert
Dabei gilt:
- Typ: ist eine Single-Byte-Kennung, die die Parameter definiert
- Länge: ist ein einzelnes Oktett der Länge des Wertefeldes in Bytes enthalten (ohne Typ und Länge Felder)
- Wert: von eins bis 254 Bytes des spezifischen Wert für den Parameter enthält,
Ich habe eine entsprechende Tabelle
Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }
Wie die Tabelle zu diesem Binärformat analysieren? Und zweitens Art und Weise, wie die binäre Datei zu analysieren, um PHP-Array-Format zurück?
Lösung
Es gibt die packen / auspacken Funktionen, die zwischen verschiedenen binär / hex / oktal / string Formate übersetzen. Lesen Sie ein Stück der Datei extrahiert erforderliche Bits mit auspacken, und von dort aus arbeiten.
$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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow