Чтение сложных двоичных форматов файлов
Есть ли книга или учебник, которые могут научить меня, как читать двоичные файлы со сложной структурой. Я сделал много попыток сделать программу, которая должна читать сложный формат файла и сохранять его в структуре. Но это всегда не удавалось из-за переполнения кучи и т. Д., Которые приводили к сбою программы.
3 ответа
Вероятно, вам лучше всего искать информацию о двоичных сетевых протоколах, а не о форматах файлов. Основные проблемы (порядок следования байтов, упаковка структуры, сериализация и десериализация указателей,...) одинаковы, но люди, работающие в сети, как правило, лучше осведомлены о проблемах и более четко представляют, как они обрабатываются. Чтение и запись двоичного двоичного объекта в или из провода на самом деле мало чем отличается от работы с двоичными двоичными объектами на диске.
Вы также можете найти множество существующих примеров в графических пакетах с открытым исходным кодом (таких как netpbm или The Gimp). Офисный пакет с открытым исходным кодом (такой как LibreOffice) также даст вам множество примеров кода, который работает со сложными и запутанными двоичными форматами.
Возможно, вам даже что-то пригодится в протокольных буферах Google или в старых версиях ONC RPC и XDR.
Я не знаю каких-либо книг или руководств по таким вопросам, но, возможно, куча реальных примеров из жизни будет более полезной для вас, чем руководство по HOWTO.
Проверьте вкус. Он позволяет вам указывать формат, используя C-подобную структуру, и автоматически генерирует анализатор для данных в C++ или Java.
Valgrind - один из лучших инструментов для устранения проблем с доступом к памяти. Я бы попробовал в следующий раз. Что касается книг, вам нужно быть более точным в том, какие форматы вы хотите анализировать. Существует множество форматов, и многие из них радикально отличаются друг от друга.