2015-10-28 87 views
2

我試圖讓基於Arduino的庫(http://blog.electrodragon.com/rc522-write-a-card-demo-code/)在C#庫,以物聯網核心,但我不明白的是:轉換字節爲bool在C#

if (!(temp & 0x03)) 

while ((i!=0) && !(n&0x01) && !(n&waitIRq)) 

它是必需的布爾值,但這些是字節! 我可以如何轉換?

如果有人知道已經有一個圖書館,請讓我知道。 謝謝。

+0

https://msdn.microsoft.com/en-us/library/system.collections.bitarray(v=vs.110).aspx – Abdullah

+0

您是否嘗試過使用Convert.ToBoolean()? – Chawin

回答

2

在C中,任何非零表達式都隱含爲真,零爲假。在C#中,你需要做一個明確的比較:

if ((temp & 0x03) == 0) 

while ((i!=0) && (n&0x01)==0 && (n&waitIRq)==0) 

或者,你可以使用the .NET's Boolean structure

bool isTempAppropriate = (temp & 0x03) == 0; 
if(isTempAppropriate) { ... } 

注意bool只是語法糖System.Boolean,和你可以使用the var keyword而不是bool

+0

也在這裏是太多括號爲C#:) – Dennis

+2

這個答案是不正確的。 C中的'!(n&0x01)'是C#中的(n&0x01)== 0'。 –

+0

@MthetheWWatson非常真實,固定!非常感謝你!! – Konamiman