QByteArray到QBitArray到QbyteArray到QString + Unicode字符

时间:2013-12-07 19:14:58

标签: c++ qt 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或UTf-8的ANSI文本,我有运行时错误或输出错误。请帮忙

1 个答案:

答案 0 :(得分:2)

默认QString构造函数使用Latin1编码。使用QString::fromUtf8(byteArr)代替QString(byteArr)。 QByteArray和QBitArray之间的转换与此问题无关。