Pergunta

Eu tenho vários formatos de arquivo binário que preciso despejar em algum tipo de formato de texto, editar e recompilar (possivelmente para uma versão ligeiramente diferente do formato binário). É claro que eu poderia escrever um monte de código de utilidade em C/C ++ para fazer esse tipo de coisa e talvez alavancar uma biblioteca para o lado do texto das coisas (XML ou JSON ou o que seja), mas esse é um padrão de tarefa que continua surgindo No meu trabalho e parece -me que provavelmente já deve existir já algum tipo de ferramenta de uso geral para esse tipo de trabalho.

Obviamente, precisaria haver alguma maneira de descrever os formatos de arquivo binário - um esquema ou algo assim - isso precisaria suportar todos os tipos de dados óbvios (strings, ints de vários tamanhos, bools, etc., os carros alegóricos também seriam bons), E coisas como campos de contagem, campos de comprimento, preenchimento/alinhamento, etc., para lidar com todas as coisas típicas que você encontra em um arquivo de dados. Também seria útil ter suporte à Endianness, pois o arquivo binário pode ter um endianness diferente da plataforma em que estamos executando.

Eu ficaria muito surpreso se algo assim já não existe, mas não tive sorte até agora no Google (como você descreve tal utilidade ou biblioteca sucinta?). A coisa mais próxima disso que eu já me lembro de ver foi o compilador de recursos da Apple/utilitários de decompiladores nos dias do Mac OS "clássico". Eles usaram uma sintaxe do tipo C, com definições de modelo de recurso em arquivos de cabeçalho para descrever os formatos dos vários recursos binários, e você pode compilar/descompilar entre essa sintaxe de origem do tipo C e os recursos binários.

Foi útil?

Solução

Binx, o idioma binário de descrição XML, além da biblioteca correspondente, parece se adequar ao seu objetivo.

Também de interesse pode ser Capítulo 24. Prático: analisar arquivos binários do Prático comum livro, que demonstra como escrever uma biblioteca para analisar as tags ID3 em arquivos mp3 (binários) em 150 linhas de código LISP. *

* Hoje em dia, eu provavelmente não usaria Lisp, mas uma linguagem funcional mais moderna como Clojure. Vejo Lendo dados binários em clojure Por exemplo.

Ps binary data library ou binary data file library são boas palavras -chave para o Google.

Outras dicas

"Synalyzeit" na Mac App Store pode valer uma olhada ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top