Arduino C函数将String转换为HEX?

Arduino C function to convert String to HEX?

我正在寻找允许我将浮点数转换为十六进制字符串的内置 C 或 C++ 函数,到目前为止我已经使用了 itoa ,但它不适用于负值,因为它可以工作以 16 为底的无符号,所以我想知道我可以使用哪个可以处理负值。

使用 itoa 我失去了负值,如下所示,

Acceleration X: -9 | X angle: **-0.5156689167**
Acceleration Y: -69 | Y angle: **-3.9565520286**
Acceleration Z: 986 | Z angle: 80.4013519287
Value of ACC per axe (x,y,z) in HEX ->ffcdfe751f68
Data to be send x ->**ffcd**
Data to be send y ->**fe75**
Data to be send z ->1f68

我还可以使用哪些其他功能来实现相同的功能?

看看你提供的结果,我会说它们是正确的。你得到了二进制补码值:

ffcd = -51 in 16-Bit binary complement
fe75 = -395 in 16-Bit binary complement
1f68 = 8040 in 16-Bit binary complement

将它除以 100 即可得到(四舍五入的)浮点值。

atoi 可以处理负值。它通过将二进制表示的最有价值的位设置为 1 来指示否定状态。如果您确实期望得到一个符号,则不会得到一个符号。

您可以通过将(16 位)十六进制值转换为十进制值并从结果中减去 65536 来自行计算二进制补码。

例如

ffcd -dec-> 65485 -sub-> 65485 - 65536 = -51 -float-> -51 / 100.0 = - 0.51