Я ищу встроенную функцию C или C ++, которая позволяет мне преобразовать число с плавающей точкой в строку HEX, до сих пор я использовал itoa
, но он не работает с отрицательными значениями, так как он работает с unsigned для base 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, и вы получите свои (округленные) значения с плавающей запятой.
Атой может обрабатывать отрицательные значения. Он указывает на отрицательный статус, устанавливая наиболее значимый бит двоичного представления равным 1. Вы не получите знак -, если вы его ожидали.
Вы можете вычислить двоичное дополнение самостоятельно, преобразовав (16-битное) значение HEX в десятичное и вычтя 65536 из результата.
например
ffcd -dec-> 65485 -sub-> 65485 - 65536 = -51 -float-> -51 / 100.0 = - 0.51
Других решений пока нет …