Какой тип структуры данных используется обычно для хранения большого количества файловой информации, извлекаемой из образа прошивки / скомпактного образа? - PullRequest
1 голос
/ 17 ноября 2011

Это мой первый пост, и, возможно, это наивный вопрос, но я не смог найти в интернете то, что хотел знать.

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

Я пытался создать некоторый класс для хранения этой информации, но я хочу знать, каков стандарт для этогообработка файлов. Это было бы очень здорово, если у кого-то есть предложения / ссылки / документы или пример кода в c ++ .

1 Ответ

0 голосов
/ 18 ноября 2011

Это сложная проблема, потому что она очень общая. Стратегия optima очень сильно зависит от характера данных, их структуры и того, что вы планируете с ними делать.

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

Определение объекта с чистыми данными (т. Е. struct в c или struct или class без методов в c ++) для каждого связного бита данных на диске и всасывание их за один раз выполняется быстрее и легче понять, но вам придется иметь дело с согласованием упаковки в памяти и порядком байтов (я знаю, вы сказали, что читаете на той же машине, на которой писал, но все же). Однако это не очень "объектно-ориентированный".

Или вы можете определить группу классов, которые знают, как высасывать их содержимое с диска. Хороший и объектно-ориентированный, и хотя код может затенить логику чтения, он делает это небольшими порциями, а документация объекта занимает большую часть провала.

Возможны бесконечные вариации.

...