// assume file points to a file
struct myStruct
{
WORD word;
WORD word2;
};两个相互竞争的代码:(1)
myStruct a;
a.word = 0xABCD;
a.word2 = 0xFADB;
fwrite(&a, sizeof(myStruct), 1, file);
output:
cdab dbfa对比:(2)
DWORD word = 0xABCDFADB;
fwrite(&word, sizeof(DWORD), 1, file);
output:
dbfa cdab我的问题是:为什么fwrite不适合写结构?我假设(1)将具有与(2)相同的输出。然而,fwrite是单独读取每个结构成员变量(然后以小端顺序写入它们)。相反,我希望(1)将整个结构作为一个连续的块读取,并从该块的末尾(而不是第一个成员变量的末尾)开始写入二进制数据。
有什么想法?
发布于 2011-12-03 13:11:27
如果您使用的是小端体系结构,则整个结构不会倒着存储;只有整数、指针和其他数值才会倒着存储。
因此,当您有一个包含两个WORD的结构时,每个WORD都以小端顺序存储,但字段本身不会在内存中进行切换。当你有一个单一的DWORD,那就是一个单一的单元,它将以小端存储。
https://stackoverflow.com/questions/8365662
复制相似问题