英文:
Receiving a Floating Point value in bytes in Java
问题
我正在通过USB接收一个浮点数值,以字节形式。如何将该值作为浮点数导入?请记住,实际上它是一个浮点数,我只是通过USB逐字节接收它。首先是最高有效字节(MSB)。
import struct
# 以字节形式接收的数据
USB_ByteArray = [0x9A, 0x99, 0x99, 0x42]
# 将字节数组转换为浮点数
float_value = struct.unpack('>f', bytes(USB_ByteArray))[0]
print(float_value)
这段代码会将给定的字节数组转换为相应的浮点数,得到的结果应该是76.8。
英文:
I am receiving a floating point value over USB, in bytes. How do I bring that value in as a floating point number. Keep in mind it is actually a float point number, I'm just receiving it as byte at a time via USB. MSB first.
USB_ByteArray[3] = 42
USB_ByteArray[2] = 99
USB_ByteArray[1] = 99
USB_ByteArray[0] = 9A
How do I represent the above byte value as the floating point number they represent?
76.8 = 0x4299999a (IEEE Floating Point )
答案1
得分: 4
请查看Float.intBitsToFloat()
。假设使用的编码是IEEE 754,您可以从字节值创建一个整数,并可以使用该方法将其转换为浮点数。
使用jshell的示例:
axel@xiaolong ~ % jshell
| Welcome to JShell -- Version 14
| For an introduction type: /help intro
jshell> Float.intBitsToFloat(0x4299999a)
$1 ==> 76.8
英文:
Have a look at Float.intBitsToFloat()
. Assuming the encoding used is IEEE 754, you create an int from the byte values and can use that method to convert it to a float.
Example using jshell:
axel@xiaolong ~ % jshell
| Welcome to JShell -- Version 14
| For an introduction type: /help intro
jshell> Float.intBitsToFloat(0x4299999a)
$1 ==> 76.8
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论