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

解决方案 »

  1.   

    这个应该是c和java中关于int和float的存储位数不同的原因吧。
      

  2.   

    存储都是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)。这就是真正的原因。