RT,有一个Little-Endian 的浮点数,我要读进java里面,所以要转换,但似乎浮点不能直接进行位运算,弄得我要写一个用ByteBuffer类进行转换,不知道这样是否恰当  private static float convertToBE (float f) {
      ByteBuffer b = ByteBuffer.allocate(4);
      b.putFloat(f);
      byte[] nb = new byte[4];
      nb[0] = b.get(3);
      nb[1] = b.get(2);
      nb[2] = b.get(1);
      nb[3] = b.get(0);
      b.rewind();//将b 内部指针变回0
      b.put(nb);//用新的字节数组替换掉原来的
      return b.getFloat(0);//读出浮点数
  }这样做效率如何~?

解决方案 »

  1.   

    使用Float.bitsToFloat不就可以了
      

  2.   

    似乎没有这个函数~~
    Float.bitsToFloat
      

  3.   

    不好意思是:
    Float.intBitsToFloat
      

  4.   

    明白了上面两位的意思了~,我来总结一下~float不能直接进行位运算,所以要使用Float类的函数
    Float.floatToIntBits()将float变成int,这跟用(int)强制转换不同,函数只是将float数据类型变成int,但是每个字节的内容不变,而强制转换(int)是将浮点的整数部分取出来变成int以后就可以对其左位运算,运算完毕以后,再用Float.intBitsToFloat()转换回来BTW:原来little-endian 到 big-endian 的转换可以不用自己写,
    用字节数组构造一个ByteBuffer 对象,然后使用对象order()函数可以指定读取float的时候使用Little-endian方式读取