如何在Java中从浮点转换为4字节?
我无法转换如下内容:如何在Java中从浮点转换为4字节?,java,byte,converter,Java,Byte,Converter,我无法转换如下内容: byte[] b = new byte[] { 12, 24, 19, 17}; 变成这样: float myfloatvalue = ?; 谁能给我举个例子吗 另外,如何将浮点值转换回字节?将字节转换为int并使用float.intBitsToFloat() )byte[]->float 与: float->字节[] 反向操作(知道上述结果): 从byte[]->float,您可以执行以下操作: byte[] b = new byte[] { 12, 24, 19,
byte[] b = new byte[] { 12, 24, 19, 17};
变成这样:
float myfloatvalue = ?;
谁能给我举个例子吗
另外,如何将浮点值转换回字节?将字节转换为int并使用float.intBitsToFloat() )
byte[]
->float
与:
float
->字节[]
反向操作(知道上述结果):
从
byte[]
->float
,您可以执行以下操作:
byte[] b = new byte[] { 12, 24, 19, 17};
float myfloatvalue = ByteBuffer.wrap(b).getFloat();
这里是使用ByteBuffer的替代方法。分配转换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);
这些字节是浮点表示的位,还是4字节整数?它们的顺序是什么?12是最高有效位还是最低有效位的8位?它们只是我键入的随机字节值。精确值的可能重复并不重要。字节代表什么?换句话说,字节是如何表示浮点数的?这很有帮助,将浮点数转换回字节+1怎么样?老实说,ByteBuffer是一个未被充分使用且未被重视的类。@user1395152:请阅读ByteBuffer
的文档。查看我的更新。+1您可能还需要使用.order(ByteBuffer.LITTE\u ENDIAN)
设置字节顺序。这对我帮助很大。在需要的时候派上用场。美妙之处在于,它甚至可以与谷歌protobuf的ByteBuffer一起工作。非常感谢!小点,ByeBuffer用大端码编码,当前示例用小端码编码。让他们匹配将是伟大的!泰!
byte[] b = new byte[] { 12, 24, 19, 17};
float myfloatvalue = ByteBuffer.wrap(b).getFloat();
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);