2017-04-14 82 views
0

我想转换存储在QByteArray中为字符串值字节的数据。该字符串值,我用它在用户界面窗口中显示..的QByteArray字节int和把它作为字符串值

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打印“4294967233” ......此代码的工作对于一些喜欢为0x1,0×45字节的和一些other..but此代码不能完美地处理所有字节的数据到字符串..请帮助我,并为此编写代码并将其发布到此处..感谢:

回答

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; 
+0

谢谢老兄,它的工作 – shashi