【发布时间】:2017-06-15 11:31:48
【问题描述】:
我正在尝试将 HEX 字符串转换为单个浮点值。该字符串长 4 个字节。它被定义为:
String B = "";
它是一个较长字符串的子字符串:
B = input.substring(6,14);
这会导致我尝试将字符串转换为单个浮点值。
网上我找到了如下代码:
float y = *(float*)&B;
这编译没有错误,但是当我运行代码时它总是0.000000。我猜我不能将该函数与字符串一起使用。一个典型的字符串可以是"bb319ba6",它应该是-0.002710083。为此,我使用的是我在网上找到的 IEEE 754 转换器。
我基本上需要在 Arduino 上进行相同的转换。我希望有人可以帮助我。
【问题讨论】:
-
问题:为什么不首先输入浮点值?
-
我看到你已经包含了 IEEE-754 标签。该规范在其对 matissa 布局、指数和使用的偏差的定义中是明确的。您需要进行一些冗长的按位操作,但可以做到。遵循规范。
-
有一个带有 ADC 的放大器,用于连接到 Arduino 的力传感器。我得到的输入数据是单个字节,然后我将其放入一个字符串中。
-
float y = *(float*)&B;这行没有意义。您将String*重新解释为float*。如果您有 4 个字节b1,b2,b2,b3,(lsB 到 msB),那么您可以通过执行b1 | (b2 << 8) | (b3 << 16) | (b4 << 24)将它们卷积为 32 位整数,然后将其重新解释为浮点数。 (stackoverflow.com/questions/3991478/…, stackoverflow.com/questions/26310249/…)
标签: string arduino floating-point ieee-754