Arduino C функция для преобразования строки в HEX?

Я ищу встроенную функцию 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

Какие еще функции я могу использовать с той же функциональностью?

-2

Решение

Глядя на предоставленные вами результаты, я бы сказал, что они правильные. Вы получили двоичные значения дополнения:

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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]