日期:2014-05-18  浏览次数:20691 次

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