Чтение сложных двоичных форматов файлов - PullRequest
2 голосов
/ 25 апреля 2011

Есть ли какая-нибудь книга или учебник, которые могут научить меня, как читать двоичные файлы со сложной структурой. Я сделал много попыток сделать программу, которая должна читать сложный формат файла и сохранять его в структуре. Но это всегда не удавалось из-за переполнения кучи и т. Д., Которые приводили к сбою программы.

Ответы [ 3 ]

3 голосов
/ 25 апреля 2011

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

Вы также можете найти множество существующих примеров в графических пакетах с открытым исходным кодом (например, netpbm или The Gimp ). Офисный пакет с открытым исходным кодом (такой как LibreOffice ) также даст вам множество примеров кода, который работает со сложными и запутанными двоичными форматами.

Возможно, вам даже что-то пригодится в Протоколе Google Buffers или в старой школе ONC RPC и XDR.

Я не знаю каких-либо книг или руководств по таким вопросам, но, возможно, несколько реальных примеров из жизни будут более полезными для вас, чем руководство по HOWTO.

0 голосов
/ 25 апреля 2011

Выезд Аромат .Он позволяет вам указывать формат с использованием C-подобной структуры и автоматически генерировать анализатор для данных в C ++ или Java.

0 голосов
/ 25 апреля 2011

Одним из лучших инструментов для устранения проблем с доступом к памяти является valgrind.Я бы попробовал в следующий раз.Что касается книг, вам нужно быть более точным в том, какие форматы вы хотите анализировать.Существует множество форматов, и многие из них радикально отличаются друг от друга.

...