请协助进行这些转换。这是输入;
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,则会出现运行时错误或输出错误。请帮忙
最佳答案
默认的QString
构造函数使用Latin1编码。使用QString::fromUtf8(byteArr)
而不是QString(byteArr)
。 QByteArray和QBitArray之间的转换与此问题无关。