如何在Java中从浮点数转换为4字节? byte[] -> float float -> byte[]

2022-09-04 23:47:52

我无法转换这样的东西:

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

变成这样:

float myfloatvalue = ?;

有人可以给我举个例子吗?

另外,如何将浮点数转换回字节?


答案 1

byte[] -> float

使用字节缓冲器

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]

答案 2

从 -> ,您可以执行以下操作:byte[]float

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

以下是 用于转换 -> 的替代方法:ByteBuffer.allocatefloatbyte[]

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);