Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting 8 bytes of little-endian binary into a double precision float

I have a binary file that I read byte by byte.

I come across a section that is 8 bytes long, holding a double precision float (little endian). I can't figure out how to read this in and calculate it properly with masking and/or casting.

(To be specific, the file type is .LAS, but that shouldn't matter).

Are there any Java tricks?

like image 832
RedLeader Avatar asked Jun 24 '11 16:06

RedLeader


1 Answers

You can use ByteBuffer

from a byte[] bytes

 double d = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN ).getDouble();

from a Socket

 ByteBuffer bb = ByteBuffer.allocate(64*1024).order(ByteOrder.LITTLE_ENDIAN );
 socket.read(bb);
 bb.flip();
 double d = bb.getDouble();
like image 71
Peter Lawrey Avatar answered Nov 15 '22 18:11

Peter Lawrey