我有一个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
作为整数在HEX中为0xE2
。我已经有一段时间了,所以很可能很简单,但是任何帮助都会很棒!
最佳答案
我认为您可能希望自己的逻辑是:
if ( ui8BufferIn.at(0) != 0xE4 && ui8BufferIn.at(0) != 0xE2){
现在,您要说的是“如果是以下情况(不是
0xE4
)或以下情况(不是0xE2
),那么我们就有问题了”-如果我正确理解,那不是您想说的。使用您的语句,您可能会得到0xE2
,但是由于您没有得到0xE4
(ui8BufferIn.at(0) != 0xE4
),因此您的语句将执行。