我试图转换Unsigned 16类型的浮点数,但找不到用于此的函数或对话方法。

例如我有3个十进制数字,这些数字带有这些十六进制值
BD97 >>>>>>> 38.84

3098 >>>>>>> 38.96

8497 >>>>>>>> 38.79

我相信这些是半精度浮点数,但无法理解如何转换它们。
这件事对身体有帮助吗?

更新资料


对不起,我想我无法解释清楚。我上面写的值来自一种串行总线,但这些值也显示在显示屏上。来自串行总线的值来自Unsigned16(我认为这是特殊的16位数据类型)。

例如,当我从总线读取0xBD97时,机器显示屏显示38.84
或当我读取0x3098时,显示屏显示38.96。

有趣的是,我从总线上获得的这些十六进制值似乎与显示的数据无关。因此,我认为该数据是半精度数据,但是我找不到如何转换它。

谢谢

最佳答案

从总线读取的数据似乎没有使用浮点格式。根据提供的两个数据项,它似乎是按1000因子缩放的整数。我们观察到8497 = 0x9784 = 38788→38.79,并且3098 = 0x9830 = 38960→38.96。

关于c - 浮点转换方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59900559/

10-12 23:26