我正在研究温度传感器的驱动程序.这些值以十六进制形式出现,它们存储如下:
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即可获得摄氏度.
一个简单的转换会做,它就像实现2的补码imho一样复杂.例如:
static bool isPositive(string hex)
{
return Convert.ToInt16(hex, 16)>0;
}
Run Code Online (Sandbox Code Playgroud)