RandomAccessFile in = new RandomAccessFile("BOT.grd", "r");
in.seek(28);
double xll=in.readDouble();
以上是我用于读取双数据的代码,该数据存在于29到36字节的位置。存在的值是500,但我得到2.088E-317
答案 0 :(得分:1)
该文件似乎存储在与java使用的文件不同的Endianness中。在转换为double之前,可能需要反转字节,您可以尝试以下代码来读取值:
long l = in.readLong();
double d = Double.longBitsToDouble(Long.reverseBytes(l));
以下是一个说明问题的示例:
double d = 500.0;
long l1 = Double.doubleToLongBits(d);
long l2 = Long.reverseBytes(l1);
System.out.println(Double.longBitsToDouble(l1));
System.out.println(Double.longBitsToDouble(l2));
输出:
500.0
2.088356E-317