关于用C和java读同一个二进制文件却结果不同的问题

moseyy 2016-09-07 05:34:40
直接上结果,如图所示:

图上分别是用C(上)和用java(下)读取同一个文件的结果,既输出了二进制码,括号中也输出了相对应的int或float值,两者的二进制码是相同的,但是int或float值却是不同的。已知C的结果是正确的(文件是用C写的,写的值和现在输出的值是一样的),所以必然是java的结果哪儿有问题。
然后把我的code也放上来:

左边是C,右边是java,code应该没有问题。所以现在真的不知道问题出在哪儿?
...全文
295 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
moseyy 2016-09-07
  • 打赏
  • 举报
回复
存储都是4位,这没问题。问题在于存储的顺序,我检查了一下,java的存储是顺序的,而C的存储是反序的,比如一个数16909320(=2^24+2^27+2^10+2^3,二进制为00000001 00000010 00000100 00001000),在java中就是按这个顺序存储的,但是在C中却是反序存储的(00001000 00000100 00000010 00000001),所以java写的文件C出来就是134480385(=2^27+2^18+2^9+2^0)。这就是真正的原因。
unauthorized401 2016-09-07
  • 打赏
  • 举报
回复
这个应该是c和java中关于int和float的存储位数不同的原因吧。

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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