0
Answered

Отрицательное десятичное число в Javascript.

ai-systems@bk.ru 7 years ago in Tips and Tricks updated by Aleksandr Romanov (CTO) 3 years ago 3
Здравствуйте!
Есть вопрос по преобразованию типов.


По RS232 получаем значение температуры с датчика в формате T=XY.
XY это шестнадцатиричное представление температуры в грудусах цельсия.
Т.е например 26 градусов это 1А и.т.д.
Вот функция:

llsTemphex = Data.charAt(9) + Data.charAt(10)<br>llsTemp = parseInt(llsTemphex, 16)<br>

При положительных значениях - все выводится верно.

Но если вместо 1A (26) будет E6 (-26), функция возвращает 230.
Как получить правильные отрицательные значения?



Здравствуйте, Юрий!

В 16-ой системе счисления, отрицательные числа записываются особым способом.

Скорее всего под положительные числа выделен определенный диапазон значений, от минимально до максимального. И для отрицательных точно также.

Получите от датчика значение температуры -1 в 16-ом виде, преобразуйте в 10-ую, и оно скорее всего будет больше всех положительных значений, запишите его в условие и сравнивайте.

llsTemphex = Data.charAt(9) + Data.charAt(10)
llsTemp = parseInt(llsTemphex, 16)

if(llsTemp > Температура_Минус_Один_в_Десятичной)
    llsTemp = - (parseInt(llsTemphex, 16) - Лишние_значения);
  // - (230 - 224) = -26
Спасибо! Мысль понятна.