我试图转换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/