Я пытаюсь читать в двоичном файле. Проблема в том, что создателю файла не потребовалось времени для правильного выравнивания структур данных с их естественными границами, и все упаковано плотно. Это затрудняет чтение данных с использованием структур С++.
Есть ли способ принудительно упаковать struct
?
Пример:
struct {
short a;
int b;
}
Вышеупомянутая структура составляет 8 байт: 2 для short a
, 2 для заполнения, 4 для int b
. Однако на диске данные составляют всего 6 байтов (не имеющих 2 байта заполнения для выравнивания)
Имейте в виду, что фактические структуры данных - это тысячи байтов и много полей, включая пару массивов, поэтому я бы предпочел не читать каждое поле отдельно.