如何在C#中检测负十六进制值?

xil*_*eb0 10 c# hex

我正在研究温度传感器的驱动程序.这些值以十六进制形式出现,它们存储如下:

string tempHex = "08C5"; //-> Would be 22,45°C
Run Code Online (Sandbox Code Playgroud)

问题是,传感器还可以注意到负值,我不知道如何在C#中检测2的补码.

也许你可以帮助我.谢谢!

Mar*_*ata 18

static public double Temp(string hex)
{
    return Convert.ToInt16(hex,16)*0.01;
}
Run Code Online (Sandbox Code Playgroud)

从0000到7FFF的值将为正,8000到FFFF将为负.幸运的是,Convert.ToInt16()这一切都适合你,因为这正是数字在内部存储在所有现代计算机上的方式.你只需要乘以0.01即可获得摄氏度.


A. *_*mov 5

一个简单的转换会做,它就像实现2的补码imho一样复杂.例如:

static bool isPositive(string hex)
{
    return Convert.ToInt16(hex, 16)>0;
}
Run Code Online (Sandbox Code Playgroud)