byte[]数组的问题 急求答案!
我定义了一个byte[] temp=new byte[4],通过randomaccessfile 的read(byte)读取一个二进制文件,里面是浮点数,现在要把temp里的浮点数读出来,我用了下面的方法:int accum=0;
int i=0;
for( int shiftBy=0;shiftBy <32;shiftBy+=8){
accum|=((long)(temp[i]&0xff)) < <shiftBy;
i++;
}
out.println(Float.intBitsToFloat(accum));
可是结果不正确,望高手给与指点,不胜感激!!!!!!!!!!!
------解决方案--------------------使用Double.longBitsToDouble看看.
----------------------------------
long n = 0L;
for (int i = 7; i > = 0; i--){
n = (n < < 8) | (b[i] & 0xffL);
}
double d = Double.longBitsToDouble(n);
------解决方案--------------------没有必要你去给它转化~~~
读到一个ByteArrayOutputStream就可以了~~
try {
RandomAccessFile raf = new RandomAccessFile( "fileName ", "r ");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while (true){
int b = raf.read();
if (b == -1){
break;
}
bos.write(b);
}
System.out.println(bos.toString());
bos.close();
raf.close();
} catch (Exception e) {
e.printStackTrace();
}
------解决方案--------------------Float.intBitsToFloat
Double.longBitsToDouble
这两种方法出来的结果都不对啊~~
------解决方案--------------------哈,学习了,我对这方法不是很明白呀。谢谢
------解决方案--------------------intBitsToFloat,查一下jdk的api