Domanda

Ho diversi formati di file binari di cui ho bisogno per scaricare a qualche tipo di formato di testo, modifica e quindi ricompilare (forse per una versione leggermente diversa del formato binario). Naturalmente potrei scrivere un mucchio di codice utility in C / C ++ per fare questo genere di cose, e magari sfruttare una libreria per il lato del testo delle cose (XML o JSON o qualsiasi altra cosa), ma questo è un modello compito che continua a saltar fuori nel mio lavoro e mi sembra che non ci probabilmente dovrebbe esistere già una sorta di strumento di uso generale per questo tipo di lavoro.

Ovviamente non ci sarebbe bisogno di essere in qualche modo di descrivere i formati di file binari - uno schema o qualcosa del genere - questo avrebbe bisogno per supportare tutti i tipi di dati evidenti (stringhe, ints di varie dimensioni, Caccio, ecc, galleggia sarebbe bello troppo), e cose del genere campi di conteggio, i campi di lunghezza, imbottitura / allineamento, ecc, per gestire tutte le cose tipiche che si trova in un file di dati. Sarebbe anche utile avere il supporto endianness, come il file binario può avere un endianness diversa rispetto alla piattaforma stiamo girando.

Sarei molto sorpreso se qualcosa di simile non esiste già, ma non ho avuto fortuna finora tramite Google (come si fa nemmeno descrivere una tale utilità o una biblioteca succintamente?). La cosa più vicina a questa che io abbia mai ricordo di aver visto era utilità risorsa compilatore / Decompiler di Apple nei giorni di "Classic" di Mac OS. Questi utilizzato una sintassi C-like, con le definizioni dei modelli di risorse in file di intestazione per descrivere i formati dei vari binari risorse, e si potrebbe compilato / decompilare tra questa sintassi sorgente C-like e le risorse binari.

È stato utile?

Soluzione

Binx , il Binary XML Description Language, più la libreria corrispondente, sembrano adattarsi il vostro scopo.

Anche di interesse potrebbe essere Capitolo 24. Pratica: l'analisi di file binari della Practical Common Lisp libro, che dimostra come scrivere una libreria per il parsing tag ID3 a (binario ) i file MP3 in 150 linee del codice Lisp. *

* al giorno d'oggi, probabilmente non usare Lisp, ma un linguaggio funzionale più moderno come Clojure . vedi La lettura dei dati binari in Clojure un esempio.

P.S. binary data library o binary data file library sono buone parole chiave per Google.

Altri suggerimenti

"SynalyzeIt" nel Mac App Store potrebbe essere la pena dare un'occhiata ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top