我有一个与Android应用程序通信的传感器。应用程序将从传感器接收的字节收集到字节缓冲区中。各种传感器读数之一的文档指出该值是实数变量占用4个字节,因此对于该值,我在缓冲区中执行getFloat()。但是,我得到的值太小而不正确,但它们与其他正确的测量值很好地相关。我检查了字节顺序,它是正确的。请注意,更具体地记录了其他值,例如 32位无符号整数。还有另一种方法可以将4个字节解码为Java中的实际值吗?
代码:
ByteBuffer packetBufferLittleEnd = ByteBuffer.wrap(finalPacket).order(ByteOrder.LITTLE_ENDIAN);
measurement = packetBufferLittleEnd.getFloat();
答案 0 :(得分:-1)
<强>更新强> 我浏览了S.O.并找到了另一篇可能为您提供解决方案的帖子。请检查此链接:How to convert 4 bytes array to float in java
如果尝试在2-Complement中表示有符号整数,则所有正数都表示为其无符号版本。
但是,要在2-Complement中获得负值,您必须按照以下步骤操作:
以下示例演示了这一点......
1为无符号,32位: 0000 0000 0000 0000 0000 0000 0000 0001
1 in 2-Complement: 0000 0000 0000 0000 0000 0000 0000 0001
-1 in 2-Complement:
对于浮点数,该过程更耗时。您必须使用IEEE 754标准转换过程来转换为数字的基数10和基数2表示。这就是你需要将有符号数字从二进制转换为十进制表示。Converting to/from IEEE 754