将8字节的little-endian二进制转换为双精度浮点数

Red*_*der 12 java floating-point precision parsing endianness

我有一个二进制文件,我逐字节读取.

我遇到了一个8字节长的部分,持有一个双精度浮点数(小端).我无法弄清楚如何读取它并使用遮罩和/或铸造正确计算它.

(具体来说,文件类型是.LAS,但这不重要).

有没有Java技巧?

Pet*_*rey 20

您可以使用 ByteBuffer

来自a byte[] bytes

 double d = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN ).getDouble();
Run Code Online (Sandbox Code Playgroud)

来自Socket

 ByteBuffer bb = ByteBuffer.allocate(64*1024).order(ByteOrder.LITTLE_ENDIAN );
 socket.read(bb);
 bb.flip();
 double d = bb.getDouble();
Run Code Online (Sandbox Code Playgroud)