2011-10-11 77 views
0

我有代码的部分,将不检查LPT端口的输入引脚,但使用十进制值:检查位状态的二进制

while (PortAccess.Input(889) == 120) 

如何使用二进制值,该指令?

例如,00100100的位3是0,然后做一些事情。

回答

0

好了,我这样做,是因为TAFA解决方案是行不通的,我不能让它工作:

var PortValue = Convert.ToString(PortAccess.Input(889), 2).PadLeft(8, '0'); 
    PortV.Text = PortValue; 
    while (PortV.Text[3].ToString() == "1") 
    { 
    //some code 
    } 

它可能不是很好的解决方案,但它的工作;)

1

Convert.ToInt32(string value, int fromBase)

while((value & Convert.ToInt32("00000100", 2)) == 0) 

或者因为我们知道第三位是(2^2)

while((value & 0x0004) == 0) 

也是一个足够清晰的一段代码,我猜。

+0

“运算符'&'不能应用于'int'和'bool'类型的操作数:(int newPortValue = PortAccess.Input(889); if(newPortValue&0x0004 == 0) – Elfoc

+0

对不起,问题是关于运算符优先级,我将这个问题反映到我的答案中,请注意添加了括号。 – tafa