我想将存储在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和其他一些字节..但此代码不能完美地将所有字节数据转换为字符串..请帮我解决这个问题并为此编写代码并在此处发布..谢谢
答案 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;