我有一个 C++ vector ,其中充满了来自 TCP 数据段的 uint8_t 值。我专门寻找两个值中的一个,它应该位于 vector 的第一个索引处。
我有以下 if 语句来表达我的逻辑。
if ( ui8BufferIn.at(0) != 0xE4 || ui8BufferIn.at(0) != 0xE2){
printf("\nWe have a problem, no parsing will be done, Package Type = %u\n", ui8BufferIn.at(0));
proceed = false;
}
上面的 if 语句在不应该执行的时候执行了。我得到以下打印输出:
We have a problem, no parsing will be done, Package Type = 226
因此您不必进行数学计算,226
因为整数是十六进制的 0xE2
。
我已经有一段时间了,所以它很可能很简单,但任何帮助都会很棒!
最佳答案
我认为您可能希望您的逻辑是:
if ( ui8BufferIn.at(0) != 0xE4 && ui8BufferIn.at(0) != 0xE2){
现在你说的是“如果两种情况:(它不是 0xE4
)或这种情况:(它不是 0xE2
),我们就有问题了” - 如果我理解正确的话,这不是你想说的。根据您的声明,您可能会得到 0xE2
,但因为您没有得到 0xE4
(ui8BufferIn.at(0) != 0xE4
) ,您的语句将执行。
关于c++ - 比较 8 位无符号整数与 HEX 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842177/