Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中从浮点转换为4字节?_Java_Byte_Converter - Fatal编程技术网

如何在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);