我试图将这段 c++ 代码转换为 c#:
if (latch_state & 0x1) {
MC->setPin(AIN2pin, HIGH);
} else {
MC->setPin(AIN2pin, LOW);
}
if (latch_state & 0x2) {
MC->setPin(BIN1pin, HIGH);
} else {
MC->setPin(BIN1pin, LOW);
}
if (latch_state & 0x4) {
MC->setPin(AIN1pin, HIGH);
} else {
MC->setPin(AIN1pin, LOW);
}
if (latch_state & 0x8) {
MC->setPin(BIN2pin, HIGH);
} else {
MC->setPin(BIN2pin, LOW);
}
我知道足以转换MC->setPin(PinNum, state)
为,MC.setPin(pinNum, state)
所以它们不是问题,但我对 if 语句会变成什么感到困惑。
latch_state
是 type uint8_t
,但它似乎像字节一样处理(这是我试图将其转换为的)并且0x1
似乎也是一个字节。
那么如何在 if 语句中评估二进制和操作呢?
对于转换,我应该做
if ((latch_state & 0x1) == 0x0)
还是if ((latch_state & 0x1) != 0x0)
完全不同的东西?