我正在嘗試讀取二進制文件。問題在於文件的創建者沒有花時間將數據結構與其自然邊界進行適當對齊,並且所有內容都緊湊。這使得使用C++結構很難讀取數據。強制C++結構緊緊包裝
有沒有辦法迫使struct
包裝嚴密?
實施例:
struct {
short a;
int b;
}
上述結構是8個字節:2 short a
,2填充,4 int b
。但是,在磁盤上,數據只有6個字節(沒有用於對齊的2個字節的填充)
請注意實際的數據結構是數千字節和許多字段,包括一對數組,所以我寧願不要單獨閱讀每個字段。
查看包裝結構。請注意,某些體系結構需要對齊才能正確讀取結構。 –
http://en.cppreference.com/w/cpp/language/alignas says'alignas(0)has no effect'? –
'#pragma pack'可能有幫助。 – Jarod42