【发布时间】:2015-04-05 21:54:26
【问题描述】:
我有两个 8 位字符。它们是一些 16 位有符号浮点数在陀螺仪内被分解为 MSB 和 LSB 的产物。
我所知道的组合两个字节的标准方法是这样的:
(signed float) = (((MSB value) << 8) | (LSB value));
只返回垃圾。
我该怎么做?
【问题讨论】:
-
16 位浮点数?这可能吗?
-
只是出于好奇,如果交换字节会发生什么?另外,请记住,那里有两个字节,而在大多数系统上 float 是 4 个字节。你对解构的原始浮点数的另外两个字节做了什么?考虑保存并使用那些:-)
-
浮点数不像 2 的补码整数。它们是复杂的 IEEE 标准。您实际上可能需要原始浮点数的所有 4 个字节来重构一个合理的浮点数。
-
在不知道他们是如何被“分解”和/或看到一个例子的情况下,很难说这里的正确行为是什么。但可以肯定的是,您需要重新解释这些位,而您的代码并没有这样做。
-
也许你已经交换了字节顺序?或者你必须投到
unsigned char?