将uint8_t与C++中的十六进制进行比较
Compare uint8_t with hexadecimal in C++
假设我有uint8_t bytes[maxBytes];
.
现在我想将第一个字节(bytes[0]
)的低6位与0x3c
进行比较。
我尝试这样做:
bytes[0] & 0x3f == 0x3c
不幸的是,这并没有产生预期的结果。(即它总是假的,即使当我打印出bytes[0] & 0x3f
时,它也0x3c
)
我又玩了一下,发现
bytes[0] & 0x00 == 0x00
有时是真的,有时是假的。(与bytes[0] & 0x0 == 0x0
和bytes[0] & 0x00 == 0x0
相同)。它不应该总是正确的吗?
这是怎么回事?如何使0x3c
比较有效?
站点说明:我在带有atmega328pb MCU的arduino上运行此代码。
你需要括号:
(bytes[0] & 0x3f) == 0x3c
这是因为从 C 继承的&
和|
的奇怪优先级,C 从 C 继承了它们(Dennis Ritchie 在 https://www.bell-labs.com/usr/dmr/www/chist.html 年描述了这个优先级问题)。
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在C++中将十六进制字符串转换为文本数据
- 将uint8_t与C++中的十六进制进行比较
- 将变量与大十六进制数进行比较
- c++ cli从文件中比较十六进制字节不工作
- 比较std::addressof()与十六进制数
- 如何比较"4A4B4C"(字符串显示十六进制值)实际字符串"JKL"
- 比较两个c++十六进制字符串
- 比较包含十六进制值C++的Char