Arduino C函数将String转换为HEX?

时间:2016-04-07 09:33:54

标签: c++ c arduino itoa

我正在寻找允许我将浮点数转换为HEX字符串的内置C或C ++函数,到目前为止我已使用itoa,但它不能用于负值,因为它适用于unsigned对于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

我可以使用相同功能的其他功能吗?

1 个答案:

答案 0 :(得分:1)

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

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

将它除以100,得到你的(圆形)浮点值。

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

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

e.g

{{1}}