我遇到了 QByteArray
和 QString
的问题。
我正在读取一个文件并将其信息存储在 QByteArray
中。该文件采用 unicode 格式,因此包含以下内容: t\0 e\0 s\0 t\0 \0 \0
我正在尝试将此值与我指定的值进行比较,但它失败了,因为在调试器中我看到它不是 unicode 字符串。
代码将解释一切:
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.
In the debugger, it shows me that the variable Data
has the value "t\0 e\0 s\0 t\0 \0 \0"
and myValue
has the value "test"
.我该如何解决?
原文由 Nika 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 QTextCodec 将字节数组转换为字符串:
(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
或 resp .每个 ascii 字符都被编码为 2 个字节。以这种方式编码 ascii 字母的唯一 unicode 编码是 UTF-16 或 UCS-2(这是 UTF-16 的受限版本),因此在您的情况下需要 1015 mib(假设您的本地字节序是与输入字节序相同)。