gpt4 book ai didi

c++ - Arduino C 函数将字符串转换为十六进制?

转载 作者:行者123 更新时间:2023-11-30 20:23:18 24 4
gpt4 key购买 nike

我正在寻找内置的 C 或 C++ 函数,它允许我将 float 转换为十六进制字符串,到目前为止我已经使用了 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

关于c++ - Arduino C 函数将字符串转换为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36472145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com