Pregunta

Tengo varios formatos de archivos binarios que necesito para volcar a algún tipo de formato de texto, editar y luego volver a compilar (posiblemente a una versión ligeramente diferente del formato binario). Por supuesto que podría escribir un montón de código de utilidad en C / C ++ para hacer este tipo de cosas, y tal vez aprovechar una biblioteca para el lado del texto de las cosas (XML o JSON o lo que sea), pero esto es un patrón tarea que sigue apareciendo en mi trabajo y me parece que probablemente debe existir ya algún tipo de herramienta de uso general para este tipo de trabajo.

Es obvio que tendría que haber alguna manera de describir los formatos de archivo binario - un esquema o algo así - esto tendría que soportar todos los tipos de datos obvios (cadenas, enteros de varios tamaños, Bools, etc, flotadores sería bueno también), y cosas como campos de recuentos, campos de longitud, relleno / alineación, etc, para manejar todas las cosas típicas que se encuentran en un archivo de datos. También sería útil contar con el apoyo orden de bits, ya que el archivo binario puede tener un orden de bits diferente de la plataforma que estamos ejecutando.

Yo estaría muy sorprendido si algo así no existe ya, pero no he tenido suerte hasta ahora a través de Google (¿cómo describes incluso una utilidad o una biblioteca tal manera sucinta?). Lo más parecido a esto que recuerdo haber visto era compilador de recursos / servicios públicos de descompilación de Apple En los días de "clásico" Mac OS. Estos utilizan una sintaxis similar a C, con definiciones de plantillas de recursos en los archivos de cabecera para describir los formatos de los distintos recursos binarios, y se podía compilado / descompilar entre este C-como fuente de la sintaxis y los recursos binarios.

¿Fue útil?

Solución

binx , XML Binario lenguaje de descripción, además de la biblioteca correspondiente, parecen encajar su propósito.

También de interés podría ser Capítulo 24. Práctica: el análisis de archivos binarios libro de la práctica Common Lisp , que muestra cómo escribir una biblioteca para analizar las etiquetas ID3 en (binario ) archivos MP3 en 150 líneas código de Lisp. *

* hoy en día, probablemente no usar Lisp, pero un lenguaje funcional más moderno como Clojure . ver datos binarios de lectura en Clojure para un ejemplo.

P.S. binary data library o binary data file library son buenas palabras clave para Google.

Otros consejos

"SynalyzeIt" en la Mac App Store podría valer la pena un vistazo ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top