Утилита или библиотека общего назначения для компиляции/декомпиляции файлов двоичных данных?
-
23-09-2019 - |
Вопрос
У меня есть различные форматы двоичных файлов, которые мне нужно преобразовать в какой-то текстовый формат, отредактировать, а затем перекомпилировать (возможно, в несколько другую версию двоичного формата).Конечно, я мог бы написать кучу служебного кода на 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, возможно, стоит посмотреть…