【问题标题】:Floating point convert method浮点数转换方法
【发布时间】:2020-01-24 16:41:42
【问题描述】:

我试图转换无符号 16 类型的浮点数,但我找不到为此我必须使用哪些函数或对话方法。

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

3098 >>>>>>> 38.96

8497 >>>>>>>> 38.79

我相信这些是半精度浮点,但不明白如何转换它们。 在这件事上是否有任何身体帮助?

更新

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

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

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

谢谢

【问题讨论】:

  • 你没看到这个? Half-precision floating-point format
  • 你到底在问什么?发布实际代码而不是试图解释它。
  • “在这件事上是否有任何身体帮助?” --> Half-precision floating-point format,否则看起来你是在请求库或代码转储——这是题外话。
  • "我试图转换 ..." --> 发布该尝试的代码。
  • "我试图转换无符号 16 类型浮点数..." 抱歉,但这完全不清楚。无符号 16 可能是 unsigned 16 bit integerfloating point number ?转换的目的是什么?

标签: c types floating-point


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2016-04-14
    相关资源
    最近更新 更多