我正在研究温度传感器的驱动程序。 这些值以十六进制形式出现,它们存储如下:
$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的补码。
也许你可以帮助我。 谢谢!
答案 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;
}