5

我有一个 QByteArray,其中包含 UTF-16 格式的字节。

Java 程序使用套接字通过套接字向 QT 程序发送数据

//dos is DataOutPutStream
dos.writeChars("hello world");

在 QT 程序的接收端,我将套接字中的数据读取到 QByteArray 中,并且我想将其转换为 QString。检查 QByteArray 的数据变量它有 0h0e0l0l0o0 0w0o0r0l0d

当我尝试像这样用它制作一个 QString

QString str(byteArray)

结果字符串可能是空的,可能是因为它在开始时遇到了一个 0 字节,并且因为我正在使用的构造函数的文档说它在内部使用 fromAscii 而我传递的不是 ascii。

我想我必须以某种方式使用 QString::fromUTF-16 但这需要一个 ushort* 并且我有一个 QbyteArray。

请告知最好的方法是什么。

谢谢,

4

2 回答 2

4

获取指向QByteArray.data()的指针 并将其转换为 ushort*

于 2012-07-01T03:45:03.887 回答
3

假设您的 utf-16 数据具有相同的字节序或具有 BOM(字节顺序标记),这将起作用:

QByteArray utf16 = ....;
auto str = QString::fromUtf16(
                reinterpret_cast<const ushort*>(utf16.constData()));
于 2012-07-01T15:37:08.323 回答