在C#中将字节转换为布尔值

4

我正在尝试基于Arduino库(http://blog.electrodragon.com/rc522-write-a-card-demo-code/)在C#上创建一个连接到物联网核心的库,但是我不理解以下内容:

if (!(temp & 0x03))

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

需要布尔值,但这些是字节!如何转换?

如果有人知道已经制作的库,请告识我。谢谢。


https://msdn.microsoft.com/en-us/library/system.collections.bitarray(v=vs.110).aspx - Abdullah
你尝试过使用Convert.ToBoolean()吗? - Chawin
1个回答

5

C语言中,任何非零表达式都被隐式视为真,而零则为假。在C#中,您需要进行显式比较:

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

并且

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

另外,您也可以使用.NET的布尔结构

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

请注意,bool只是System.Boolean的简写,你也可以使用var关键字来替代bool

这里的C#代码中有太多括号了 :) - Dennis
2
这个答案是不正确的。在C语言中,!(n&0x01)等同于在C#中的(n&0x01) == 0 - Matthew Watson
@MatthewWatson 非常正确,已经修复!非常感谢!! - Konamiman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接