首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >二进制文件解析;这两个调用有什么不同?

二进制文件解析;这两个调用有什么不同?
EN

Stack Overflow用户
提问于 2011-12-03 13:08:20
回答 1查看 87关注 0票数 2
代码语言:javascript
运行
复制
// assume file points to a file

struct myStruct
{
     WORD word;
     WORD word2;
};

两个相互竞争的代码:(1)

代码语言:javascript
运行
复制
myStruct a;
a.word = 0xABCD;
a.word2 = 0xFADB;
fwrite(&a, sizeof(myStruct), 1, file);

output:
cdab dbfa

对比:(2)

代码语言:javascript
运行
复制
DWORD word = 0xABCDFADB;
fwrite(&word, sizeof(DWORD), 1, file);

output:
dbfa cdab

我的问题是:为什么fwrite不适合写结构?我假设(1)将具有与(2)相同的输出。然而,fwrite是单独读取每个结构成员变量(然后以小端顺序写入它们)。相反,我希望(1)将整个结构作为一个连续的块读取,并从该块的末尾(而不是第一个成员变量的末尾)开始写入二进制数据。

有什么想法?

EN

Stack Overflow用户

回答已采纳

发布于 2011-12-03 13:11:27

如果您使用的是小端体系结构,则整个结构不会倒着存储;只有整数、指针和其他数值才会倒着存储。

因此,当您有一个包含两个WORD的结构时,每个WORD都以小端顺序存储,但字段本身不会在内存中进行切换。当你有一个单一的DWORD,那就是一个单一的单元,它将以小端存储。

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8365662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档