首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QByteArray到QString

QByteArray到QString
EN

Stack Overflow用户
提问于 2013-01-03 07:55:00
回答 6查看 132.9K关注 0票数 49

我和QByteArrayQString有点问题。

我正在读取一个文件,并将其信息存储在QByteArray中。该文件是unicode格式的,因此它包含以下内容:t\0 e\0 s\0 t\0 \0 \0

我尝试将这个值与我指定的值进行比较,但失败了,因为在调试器中我发现它不是unicode字符串。

代码将解释一切:

代码语言:javascript
复制
QByteArray Data; //contains unicode string "t\0 e\0 s\0 t\0 \0 \0"
QString myValue = "test"; //value to compare.
if(Data.contains(myValue))
    //do some stuff.
else
    //do other stuff.

在调试器中,它显示变量Data的值为"t\0 e\0 s\0 t\0 \0 \0"myValue的值为"test"。我怎么才能修复它?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-01-03 08:05:53

您可以使用QTextCodec将字节数组转换为字符串:

代码语言:javascript
复制
QString DataAsString = QTextCodec::codecForMib(1015)->toUnicode(Data);

(1015为UTF-16、1014为UTF-16LE、1013为UTF-16BE、106为UTF-8)

从你的例子中我们可以看到,在你的编码中,字符串"test"被编码为"t\0 e\0 s\0 t\0 \0 \0",也就是说,每个ascii字符后面都有一个\0-byte,即resp。每个ascii字符被编码为2个字节。ascii字母以这种方式编码的唯一unicode编码是UTF-16或UCS-2 (它是UTF-16的受限版本),因此在您的示例中需要1015 mib (假设您的本地字节顺序与输入字节顺序相同)。

票数 29
EN

Stack Overflow用户

发布于 2019-01-12 07:07:55

您可以使用此QString构造函数从QByteArray转换为QString:

QString(const QByteArray &ba)

代码语言:javascript
复制
QByteArray data;
QString DataAsString = QString(data);
票数 37
EN

Stack Overflow用户

发布于 2017-12-08 19:54:21

您可以使用:

代码语言:javascript
复制
QString::fromStdString(byteArray.toStdString())
票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14131127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档