我正在尝试读取一个二进制文件。问题在于文件的创建者没有将数据结构正确地对齐到其自然边界,而是将所有数据紧密打包。这使得使用 C++ 结构体读取数据变得困难。
有没有一种方法可以强制使 struct
紧密打包?
示例:
struct {
short a;
int b;
}
上述结构是8个字节: 2个用于short a
,2个用于填充,4个用于int b
。然而,在磁盘上,数据只有6个字节(没有用于对齐的2个字节的填充)。
请注意,实际数据结构有成千上万个字节和许多字段,包括一些数组,因此我希望不必逐个读取每个字段。
alignas(0)
没有任何效果? - A Person