2017-04-14 55 views
0

QBytearrayに格納されているバイトデータを文字列値に変換したい。その文字列の値は、このコードは、0x1の、0x45のようなバイトのいくつかのためにとother..butのいくつかのために働く...「4294967233」.. UIウィンドウに表示するための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プリントしていますこのコードは、データのすべてのバイトを完全にstring.pleaseでこれを助けて、このコードを書いてここに投稿してください。

答えて

1

0x80以上のすべての値は、サンプルで負の値として解釈され、ビット単位の操作の前にunsigned型にキャストする必要があります。

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

関連する問題