我正在尝试使用fstream将文件读取为二进制文件到结构中。此文件包含正常对齐的值以及此示意图后面的12和9位值: 我的结构看起来像这样:
struct sFile{
unsigned char padding1[765]; //other values before this
char identifier[2]; //checking if we're in the right spot
unsigned strID: 9;
unsigned strValue : 12;
unsigned eneID : 9;
unsigned eneValue : 12;
unsigned dexID : 9;
unsigned dexValue : 12;
unsigned vitID : 9;
unsigned vitValue : 12;
}
我正试图以这种方式阅读
sFile saveFileStruct;
[...]
saveFile.read((char*)&saveFileStruct, sizeof(saveFileStruct));
我很确定我做错了什么,因为当标识符正确时,我会从它们应该有的位置略微移位值。我想知道我在这里做错了什么,或者是否有更好的方法。
谢谢。