Как определить отрицательные значения Hex в С#?

Я работаю над драйвером для датчика температуры. Значения поступают в шестнадцатеричной форме и сохраняются как:

string tempHex = "08C5"; //-> Would be 22,45°C

Проблема заключается в том, что датчик также может заметить отрицательные значения, и я не знаю, как я могу обнаружить 2 дополнения в С#.

Может быть, ты поможешь мне. Спасибо!

Ответ 1

static public double Temp(string hex)
{
    return Convert.ToInt16(hex,16)*0.01;
}

Значения от 0000 до 7FFF будут положительными, 8000 - FFFF будет отрицательным. К счастью, Convert.ToInt16() делает это все для вас, так как это точно, как номера хранятся на всех современных компьютерах. Вам просто нужно несколько на 0,01 для получения Цельсия.

Ответ 2

Простой convert будет делать, это так же сложно, как реализация 2 дополнения imho. Например:

static bool isPositive(string hex)
{
    return Convert.ToInt16(hex, 16)>0;
}