【发布时间】:2019-02-28 23:27:16
【问题描述】:
假设我有uint8_t bytes[maxBytes];。
现在我想将第一个字节的低 6 位 (bytes[0]) 与 0x3c 进行比较。
我试着这样做:
bytes[0] & 0x3f == 0x3c
很遗憾,这并没有产生预期的结果。 (即它总是错误的,即使当我打印出 bytes[0] & 0x3f 时,它是 0x3c)
我又玩了一些,发现
bytes[0] & 0x00 == 0x00
有时为真,有时为假。 (与bytes[0] & 0x0 == 0x0 和bytes[0] & 0x00 == 0x0 相同)。不应该永远是真的吗?
这里发生了什么?我怎样才能使我的0x3c 比较有效?
Sitenote:我在带有 atmega328pb MCU 的 arduino 上运行此代码。
【问题讨论】:
-
出了缺少的(),如果要和0x3d比较,为什么要和0x3c比较呢?
-
auto value = bytes[0] & 0x3f;然后做if (value == 0x3d) ... -
@bruno 这是一个错字。固定。