我正在寻找允许我将浮点数转换为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
我可以使用相同功能的其他功能吗?
答案 0 :(得分:1)
看看你提供的结果,我会说它们是正确的。你得到了二进制补码值:
ffcd -dec-> 65485 -sub-> 65485 - 65536 = -51 -float-> -51 / 100.0 = - 0.51
将它除以100,得到你的(圆形)浮点值。
atoi可以处理负值。它通过将二进制表示的最有价值位设置为1来指示负状态。如果您确实想要一个,则不会得到 - 符号。
您可以通过将(16位)HEX值转换为小数并从结果中减去65536来自行计算二进制补码。
e.g
{{1}}