float和int型数据写入dat文件后存储顺序相反

nmyj1 2006-11-18 11:28:51
我用fread去读txt文件,然后将所读内容写入二进制的dat文件,写入后发现写入的float数据存储顺序与正确的存储顺序是相反的,int型数据也是一样.


例如: 42 01 33 33(十六进制) 这是正确的顺序
33 33 01 42 这是我写入dat文件内的顺序

请各位高手赐教,不胜感激!
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmyj1 2006-11-18
  • 打赏
  • 举报
回复
我已按您提供的程序进行了测试,结果显示Little endian,请问这是导致子序相反的原因吗?若是程序中应如何修改.

                     谢谢!
jixingzhong 2006-11-18
  • 打赏
  • 举报
回复
#include <stdio.h>
main () {
int i = 0x12345678;
if (*(char *)&i == 0x12)
printf ("Big endian\n");
else if (*(char *)&i == 0x78)
printf ("Little endian\n");
}

可以用这段代码,看看机器环境是 大端序 还是小端序
jixingzhong 2006-11-18
  • 打赏
  • 举报
回复
int 和 float 是多字节数据,
必须考虑机器字节序。

按照 2进制写的时候,
没考虑数据意义, 只是把内存中的数据按字节写入文件,
这样就导致了反序 ...
jixingzhong 2006-11-18
  • 打赏
  • 举报
回复
字节序 啊~~
liuchangyan 2006-11-18
  • 打赏
  • 举报
回复
jixingzhong(瞌睡虫·星辰): 你真的好厉害...什么都懂,你收徒弟不?呵呵...

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧