接收在Java中以字节表示的浮点数值

huangapple go评论80阅读模式
英文:

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

huangapple
  • 本文由 发表于 2020年4月10日 02:25:27
  • 转载请务必保留本文链接:https://go.coder-hub.com/61127783.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定