【问题标题】:QByteArray value compareQByteArray 值比较
【发布时间】:2016-01-14 07:10:13
【问题描述】:

为什么声明:

QByteArray data (initialized somehow);
if(data.at(0) == 0xFF)
do_something();

给出这样的警告: 由于数据类型 [-Wtype-limits] 的范围有限,比较总是错误的。

您可以使用0xff 值初始化QByteArray

QByteArray data;
data[0]=0xff;

这不会给出警告或错误,那么为什么不能将它与0xff 值进行比较?

【问题讨论】:

    标签: c++ qt hex comparison qbytearray


    【解决方案1】:

    QByteArray 是 Qt 处理const char * 的安全方式。 char 的范围是 -128 到 127。因此您可以分配或比较您的值:

    if(data.at(0) == 0xFF)
    {
    }
    

    但是编译器会生成警告,条件总是false。由于范围,字符值永远不会是 255。不是unsigned char

    【讨论】:

      【解决方案2】:

      您可以使用以下表达式:

      if((unsigned char)(data.at(0)==0xFF){}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-02
        • 2021-05-03
        • 2011-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多