Утилита общего назначения или библиотека для компиляции / декомпиляции двоичных файлов данных? - PullRequest
3 голосов
/ 27 января 2010

У меня есть различные двоичные форматы файлов, которые мне нужно записать в какой-то текстовый формат, отредактировать и затем перекомпилировать (возможно, в несколько иную версию двоичного формата). Конечно, я мог бы написать кучу служебного кода на C / C ++ для такого рода вещей, и, возможно, использовать библиотеку для текстовой стороны вещей (XML или JSON или что-то еще), но это шаблон задачи, который постоянно появляется в моей работе, и мне кажется, что, вероятно, должен существовать какой-то инструмент общего назначения для такой работы.

Очевидно, что должен быть какой-то способ описания двоичных форматов файлов - схема или что-то подобное - это должно поддерживать все очевидные типы данных (строки, целые числа различных размеров, bools и т. Д., Было бы неплохо с плавающей точкой) тоже), и такие вещи, как поля подсчета, поля длины, отступы / выравнивание и т. д., чтобы обрабатывать все типичные вещи, которые вы найдете в файле данных. Также было бы полезно иметь поддержку порядка байтов, поскольку двоичный файл может иметь порядок байтов, отличный от платформы, на которой мы работаем.

Я был бы очень удивлен, если что-то подобное уже не существует, но мне пока не повезло через Google (как вы можете описать такую ​​утилиту или библиотеку кратко?). Самой близкой вещью, которую я когда-либо помню, были утилиты компилятора / декомпилятора ресурсов Apple во времена «Классической» Mac OS. В них использовался C-подобный синтаксис с определениями шаблонов ресурсов в заголовочных файлах для описания форматов различных двоичных ресурсов, и вы могли компилировать / декомпилировать между этим C-подобным исходным синтаксисом и двоичными ресурсами.

Ответы [ 2 ]

5 голосов
/ 27 января 2010

BinX , язык описания двоичного XML и соответствующая библиотека, кажется, соответствуют вашим целям.

Также представляет интерес Глава 24. Практическое руководство: парсинг двоичных файлов книги Practical Common Lisp , в которой показано, как написать библиотеку для анализа тегов ID3 ​​в (двоичном) MP3-файлы в 150 строк кода Lisp. *

* в настоящее время, я бы, наверное, не использовал Lisp, но более современный функциональный язык, такой как Clojure . см. Чтение двоичных данных в Clojure для примера.

P.S. binary data library или binary data file library - это хорошие ключевые слова для Google.

2 голосов
/ 09 июля 2011

"SynalyzeIt" в Mac App Store может стоить посмотреть ...

...