【问题标题】:QByteArray to QBitArray to QbyteArray to QString + Unicode charactersQByteArray 到 QBitArray 到 QbyteArray 到 QString + Unicode 字符
【发布时间】:2013-12-25 01:49:37
【问题描述】:

请帮助进行这些转换。这是输入;

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,我会遇到运行时错误或错误输出。请帮忙

【问题讨论】:

    标签: c++ qt unicode


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 2012-12-17
      • 2018-12-22
      • 2016-11-27
      • 2017-11-04
      • 2016-10-14
      • 2016-11-04
      • 2012-02-03
      • 1970-01-01
      相关资源
      最近更新 更多