c++ - 比较 8 位无符号整数与 HEX 失败

标签 c++ hex unsigned-integer

我有一个 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/

相关文章:

javascript - 检查对象属性是否更改其值

java - 十六进制字符串到int数组的转换

ios - 将扫描的条码值解码为int值

c++ - WM_CLOSE事件从不发送/接收?

c++ - 手动创建的矩阵的 OpenCV 立体声校正

java - 使用Java将十六进制转储的字符串表示形式转换为字节数组?

binary - 如何将十六进制值转换为 32 位 MIPS 指令?

mysql - MySQL中的zerofill有什么好处?

c++ - 使用 c++ api 访问 cv::Mat 中的元素 (x,y)

c++ - 在可变参数模板中包含相同类型的数组