Qbytearray字节为int并将其存储为字符串值

时间:2017-04-14 11:04:44

标签: qt

我想将存储在QBytearray中的字节数据转换为字符串值。该字符串值使用它在ui窗口中显示..

 QByteArray array;
    array.append( 0x02 );
    array.append( 0xC1);
    qDebug()<<( uint )array[0]<<"  "<<( uint )array[1];  
    uint i = 0x00000000;
    i |= array[1];
    qDebug()<<i;    
    uint j = 0x00000000 | ( array[0] << 8 );
    qDebug()<<j;
    i |= j;

    bool b = false;
    QString str = QString::number( i );
    qDebug()<<str;

但str打印&#34; 4294967233&#34; ...此代码适用于某些字节,如0x1,0x45和其他一些字节..但此代码不能完美地将所有字节数据转换为字符串..请帮我解决这个问题并为此编写代码并在此处发布..谢谢

1 个答案:

答案 0 :(得分:1)

所有等于或大于0x80的值都会将样本中的值解释为负值,因此在按位运算之前需要转换为无符号类型。

QByteArray array;
array.append( 0x02 );
array.append( 0xC1);

unsigned int value = 0;
for (int i = 0; i < array.size(); i++)
    value = (value << 8) | static_cast<unsigned char>(array[i]);

QString str = QString::number(value);
qDebug() << value << str;