Frage

Ich habe verschiedene binäre Dateiformate, die ich bis zu einem gewissen Art von Text-Format entleeren muß, bearbeiten und dann neu zu kompilieren (möglicherweise auf eine etwas andere Version des binären Formats). Natürlich könnte ich eine Reihe von Utility-Code in C / C ++ zu tun, um diese Art der Sache, schreiben und vielleicht eine Bibliothek für die Text-Seite der Dinge (XML oder JSON oder was auch immer) nutzen, aber das ist eine Aufgabe, Muster, das auftauchende hält in meiner Arbeit, und es scheint mir, dass es wahrscheinlich sollte schon eine Art universelles Werkzeug für diese Art von Arbeit existieren.

Natürlich wäre es muß einige Wege, um von den binären Dateiformate beschreiben - ein Schema oder so - das müßte alle die offensichtlichen Datentypen unterstützen (Strings, Ints in verschiedenen Größen, bools, etc, würde Schwimmern schön auch), und Dinge wie Zählungsfeldern, Längenfelder, padding / Ausrichtung, usw., alle typischen Dinge zu handhaben, dass Sie in einer Datendatei finden. Es wäre auch sinnvoll sein, endianness Unterstützung zu haben, da die Binärdatei eine andere endianness als die Plattform haben wir laufen weiter.

Ich würde sehr überrascht, wenn so etwas wie dies nicht bereits vorhanden ist, aber ich habe kein Glück so weit über Google hatte (wie Sie selbst ein solches Dienstprogramm oder Bibliothek kurz und bündig beschreiben?). Die nächste Sache, das ich jemals zu sehen erinnere, war Apples Ressource-Compiler / Decompiler Dienstprogramme in den Tagen der „Classic“ Mac OS zurück. Diese verwendet, um eine C-ähnliche Syntax, mit Ressourcenvorlagendefinitionen in Header-Dateien der Formate der verschiedenen binären Ressourcen zu beschreiben, und man konnte kompilierte / decompile zwischen dieser C-ähnlichen Syntax Quelle und die binären Ressourcen.

War es hilfreich?

Lösung

Binx , die Binary XML-Beschreibungssprache, plus die entsprechende Bibliothek, scheinen fit Ihr Zweck.

Auch von Interesse sein könnte Kapitel 24. Praktisch: Parsing Binary Files des Praktisches Buchs Common Lisp, die zeigt, wie eine Bibliothek für das Parsen von ID3-Tags in (binär schreiben MP3-Dateien) in 150 Zeilen Code von Lisp. *

* heute, ich würde wahrscheinlich nicht verwenden Lisp, aber eine modernere funktionale Sprache wie Clojure . finden Sie unter Lesen von Binärdaten in Clojure ein Beispiel.

P. S. binary data library oder binary data file library sind gute Stichworte für Google.

Andere Tipps

"SynalyzeIt" in den Mac App Store könnte sich lohnen, einen Blick ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top