I have a 4 bytes array which represent a float value. The bytes is read from network, for example, 3e 3f e3 a0. How can I convert it from byte[] to float in java?
-
6Peters answer should be marked as accepted.Simon A. Eugster– Simon A. Eugster2015-05-22 10:46:17 +00:00Commented May 22, 2015 at 10:46
-
Should it? Peter's answer requires constructing an object while Xavier's doesn't.plugwash– plugwash2017-08-01 20:03:46 +00:00Commented Aug 1, 2017 at 20:03
Add a comment
|
3 Answers
In Java a char is 16-bit. If you mean you have a 4 byte values in little endian byte order which you need to convert to a float you can use ByteBuffer.
byte[] bytes = { }
float f = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getFloat();
3 Comments
Osmund Francis
Very useful class indeed.
Vit Bernatik
There is also version with offset and length: ByteBuffer.wrap(bytes,offset,length)
ndtreviv
The order! That did it for me.
Try this:
float foo = Float.intBitsToFloat( buffer[n] ^ buffer[n+1]<<8 ^ buffer[n+2]<<16 ^ buffer[n+3]<<24 );
1 Comment
Takeshi Kaga
XOR? Don't you mean OR?