2011-10-11 85 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