小型机上和微机上字节顺序不同怎么办?

ckc 2002-09-27 11:44:48
用fwrite(&finsize,sizeof(finsize),1,fout);
在小型机上写入一个长整型到文件中
然后在微机上读出来
因为intel的cpu的顺序和小型机上的是相反的
所以读出错误
大家都是怎么处理这些事情的啊,因为我发现我的程序中有不少这样的地方
不方便改啊
...全文
20 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellwolf 2002-09-27
  • 打赏
  • 举报
回复
可以用stl中的traits技巧,已达到编译期的通用性(不是运行期的,所以效率忒高)
具体可以看c-view杂志或看stl源代码
eric_uugames 2002-09-27
  • 打赏
  • 举报
回复
存储时用htonl(host to net)写入网络字节序文件
读取时用ntohl(net to host)将读入的网络字节序数据转化为本主机字节序
小型机:
lData = htonl(finsize);
fwrite(&lData,sizeof(lData),1,fout);
微机:
lAnswere = ntohl( fread(<mp, sizeof(ltmp), 1, fin) );
ok了。

对于已经写号了的文件可以试十:
1) lAnswere = ntohl( fread(<mp, sizeof(ltmp), 1, fin) );
2) lAnswere = htonl( fread(<mp, sizeof(ltmp), 1, fin) );
有且只有一种对

panet 2002-09-27
  • 打赏
  • 举报
回复
1、使用网络字节顺序,但是要注意整形的位数(4 bytes?);
2、使用字符串传输,这是最安全的方法;

--------------------
3日不编程,食肉无味
QQ:612898
liubear 2002-09-27
  • 打赏
  • 举报
回复
用hton和ntol,就OK了
blh 2002-09-27
  • 打赏
  • 举报
回复
1。在小型机上你先用htonl()转换成网络字节顺序后存入文件,在pc上再用ntohl()转换回为本机格式
2。按字节方式存储
szbug 2002-09-27
  • 打赏
  • 举报
回复
自己做翻转,或者用字符传
cwanter 2002-09-27
  • 打赏
  • 举报
回复
没办法,改代码!

69,371

社区成员

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

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