因为我输出的数据文件最终是被 VC++ 写的程序读取,而 VC++ 默认 big endian,所以我希望用java生成二进制数据文件的时候就按照 big endian,这样 VC++ 读取的时候就不用再将 little endian 转换成 big endian 。

解决方案 »

  1.   

    我觉得很奇怪,楼主为什么要这样写入文件。
    你把这个float当字符串写进文件不就行了嘛?C++那边当字符串读
    这样就没有编码问题了!
      

  2.   

    我用java生成的是一个媒体格式的文件,float只是文件中的某参数,最后该文件是由VC++写的播放器播放的。
      

  3.   

    说反了,java 是 big endian ,c++ 是 little endian 。
      

  4.   

    对,java本身是Big endian的
    c++才是little endian
    要转换成Little endian的话,可以这么来做
     public void writeInt(int i)throws IOException{
         byte[] b=new byte[4];
        
         int maskB1 = 0xff;
         int maskB2 = 0xff00;
         int maskB3 = 0xff0000;
         int maskB4 = 0xff000000;
        
         b[3] =(byte)((i & maskB4)>>>24);
         b[2] =(byte)((i & maskB3)>>>16);
         b[1] =(byte)((i & maskB2)>>>8);
         b[0] =(byte)(i & maskB1);
        }这是一个int的转型
      

  5.   

    但是在jdk1.4种加入了
    java.nio.ByteOrder
    你可以查一下是不是有直接进行Big-endian和Little-endian间转换的方法