首页 > 解决方案 > 使用 fread 将数据复制到结构中

问题描述

我在看一些旧代码,我真的不明白。

有一个标题结构

struct my_header {
   UINT32 chksum,
   UINT16 ValueA,
   UINT64 ValueB,
   UINT16 ValueC
};

然后有一个电话fread

fread(&header, 1, sizeof(header), fd);

这是文件的内容,通过 slickedit 十六进制视图

F5010000 3906000 50429178 07000000
14000000 0000000 00000000 00000000

读取后,我检查结构中的数据,它看起来像这样

chksum: 0x00001F5
ValueA: 0x0639
ValueB: 32087556688
ValueC: 0x0014

当您将fread得到的内容与十六进制转储进行比较时,它看起来几乎是正确的。但是事情的顺序很奇怪..例如,chksumis1F5但十六进制转储是F501. ValueA639,但在十六进制转储中它是3906......

到底发生了什么?

标签: c

解决方案


推荐阅读