2013-12-07 97 views
1

幫助請與這些轉換。這是輸入;從字節QByteArray到QBitArray到QbyteArray到QString + Unicode字符

QByteArray byteArr; 
QBitArray bitArr; 
QFile file(adress); 
byteArr.readAll(file); 

皈依到位:

BitArr.resize(8*byteArr.count()); 
for(int i=0; i<byteArr.count(); ++i) 
    for(int b=0; b<8; ++b) 
     bitArr.setBit(i*8+b, byteArr.at(i)&(1<<b)); 

皈依從位字節:

for(int i=0; i<bitArr.count(); ++i) 
    byteArr[i/8] = (byteArr.at(i/8) | ((bitArr[i]?1:0)<<(i%8))); 

,並顯示結果

ui->textBrowser->setText(QString(byteArr)); 

此代碼工作正常完美的與ASCII字母。 但是,如果我打開ANSI文本的Unicode或UTf-8,我有運行時錯誤或錯誤的輸出。請幫助

回答

2

默認QString構造函數使用Latin1編碼。使用QString::fromUtf8(byteArr)而不是QString(byteArr)。 QByteArray和QBitArray之間的轉換與此問題無關。