我有一个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),因此您的语句将执行。

07-24 09:34