Я пытаюсь прочитать двоичный файл. Проблема в том, что создатель файла не потратил времени на то, чтобы правильно выровнять структуры данных по их естественным границам, и все упаковано плотно. Это затрудняет чтение данных с использованием структур C++.
Есть ли способ заставить структуру плотно упаковываться?
Пример:
Приведенная выше структура состоит из 8 байтов: 2 для короткого a, 2 для заполнения, 4 для int b. Однако на диске данные имеют размер всего 6 байтов (без 2 байтов заполнения для выравнивания).
Имейте в виду, что фактические структуры данных составляют тысячи байтов и многие поля, включая пару массивов, поэтому я бы предпочел не читать каждое поле по отдельности.
Подробнее здесь:
https://stackoverflow.com/questions/210 ... ck-tightly