如何在Java中将浮点数转换为4个字节?

时间:2013-01-13 22:04:59

标签: java byte converter

我无法转换这样的内容:

byte[] b = new byte[] { 12, 24, 19, 17};

这样的事情:

float myfloatvalue = ?;

有人可以举个例子吗?

另外如何将浮动转回字节?

3 个答案:

答案 0 :(得分:37)

byte[] - > float

使用ByteBuffer

byte[] b = new byte[]{12, 24, 19, 17};
float f =  ByteBuffer.wrap(b).getFloat();

float - > byte[]

反向操作(知道上述结果):

float f =  1.1715392E-31f;
byte[] b = ByteBuffer.allocate(4).putFloat(f).array();  //[12, 24, 19, 17]

答案 1 :(得分:17)

来自byte[] - > float,你可以这样做:

byte[] b = new byte[] { 12, 24, 19, 17};
float myfloatvalue = ByteBuffer.wrap(b).getFloat();

以下是使用ByteBuffer.allocate转换float - >的替代方法。 byte[]

int bits = Float.floatToIntBits(myFloat);
byte[] bytes = new byte[4];
bytes[0] = (byte)(bits & 0xff);
bytes[1] = (byte)((bits >> 8) & 0xff);
bytes[2] = (byte)((bits >> 16) & 0xff);
bytes[3] = (byte)((bits >> 24) & 0xff);

答案 2 :(得分:1)

将字节转换为int并使用Float.intBitsToFloat()

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Float.html#intBitsToFloat(int