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);//读出浮点数
}这样做效率如何~?
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);//读出浮点数
}这样做效率如何~?
解决方案 »
- 帮帮看看这个字符串
- 急 java中jxl导出Excel如何设置页边距?
- 出错在哪里?
- 解释性语言的定义?
- JInternalFrame的问题
- 我使用POI的API生成的Excel文件,总是报“不同的单元格格式太多”。请问各位这是怎么回事?
- 提一个哈菜的问题:Applet到底运行在本机还是服务器?
- 在浏览器中的Applet的源代码,放在那里了(Windows2000)。急,急急急
- 如何在JEditPanel中实现语法加亮,或者有什么其他的办法,哪里有这方面的教材?
- 用 javadoc创建好网页后 打开乱码
- 在SWT的canvas中如何控制图片~~高手指点
- 初学JAVA,怎样获取控制台输入的一行字符串
Float.bitsToFloat
Float.intBitsToFloat
Float.floatToIntBits()将float变成int,这跟用(int)强制转换不同,函数只是将float数据类型变成int,但是每个字节的内容不变,而强制转换(int)是将浮点的整数部分取出来变成int以后就可以对其左位运算,运算完毕以后,再用Float.intBitsToFloat()转换回来BTW:原来little-endian 到 big-endian 的转换可以不用自己写,
用字节数组构造一个ByteBuffer 对象,然后使用对象order()函数可以指定读取float的时候使用Little-endian方式读取