shashi
shashi

Reputation: 27

Qbytearray byte to int and storing it as string value

I want to convert byte data that stored in QBytearray into string value. that string value am using it for displaying in ui window..

 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;

but the str prints "4294967233"...this code works for some of the bytes like 0x1, 0x45 and for some of other..but this code not working perfectly for all bytes of data into string..please help me with this and write code for this and post it here..thanks

Upvotes: 0

Views: 1464

Answers (1)

ramzes2
ramzes2

Reputation: 762

All values equal or bigger than 0x80 interprets in your sample as negative values, so it need cast to unsigned type before bitwise operations.

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;

Upvotes: 2

Related Questions