Утилита или библиотека общего назначения для компиляции/декомпиляции файлов двоичных данных?

StackOverflow https://stackoverflow.com/questions/2146192

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

«SynalyzeIt» в Mac App Store, возможно, стоит посмотреть…

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top