2017-04-14 2 views
0

Ich möchte Byte-Daten, die in QBytearray in Zeichenfolge gespeichert Wert konvertieren. dass String-Wert es verwende in ui Fenster zur Anzeige ..Qbytearray Byte zu int und speichert es als Zeichenfolge Wert

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; 

aber die str prints „4294967233“ ... Dieser Code funktioniert für einige der Bytes wie 0x1, 0x45 und für einige von other..but dieser Code funktioniert nicht perfekt für alle Datenbytes in string .. bitte hilf mir dabei und schreibe Code dafür und poste es hier..danke

Antwort

1

Alle Werte gleich oder größer als 0x80 interpretieren in deiner Probe als negative Werte, Daher muss es vor den bitweisen Operationen in einen vorzeichenlosen Typ umgewandelt werden.

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

Dank bro funktionierte es – shashi

Verwandte Themen