简体   繁体   English

QByteArray到QBitArray到QbyteArray到QString + Unicode字符

[英]QByteArray to QBitArray to QbyteArray to QString + Unicode characters

Help please with these conversions. 请协助进行这些转换。 This is input; 这是输入;

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

Convertion from bytes to bits: 从字节到位的转换:

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));

Convertion from bits to bytes: 从位到字节的转换:

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

And showing the result 并显示结果

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

This code works fine perfect with ASCII letters. 此代码可以完美地与ASCII字母一起使用。 But if I opened Unicode or UTf-8 of ANSI text, I have runtime error or wrong output. 但是,如果我打开Unicode文本或Unicode文本的UTf-8,则会出现运行时错误或输出错误。 Please help 请帮忙

Default QString constructor uses Latin1 encoding. 默认的QString构造函数使用Latin1编码。 Use QString::fromUtf8(byteArr) instead of QString(byteArr) . 使用QString::fromUtf8(byteArr)而不是QString(byteArr) Conversion between QByteArray and QBitArray is not related to this issue. QByteArray和QBitArray之间的转换与此问题无关。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM