2017-04-14 83 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