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

时间:2015-05-15 06:17:58

标签: c# hex

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

$user = "username"
$pass = "password"

dir /b cmd.exe -arp -a>List.txt
for /f "Tokens=1 Delims= " %%a in (List.txt) do (

echo SSH <IP ADDRESS from List.txt> $user $pass
echo sudo ifconfig eth0 netmask 255.255.255.192
echo exit
)

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

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

2 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:5)

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

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