我正在使用 Qt 为我的公司开发协议(protocol)。需要查询Window Registry并将获得的值写入一个预先协商的socket。我已将注册表数据读入 QString
。我必须使用 8 位 Unicode 字符和一些 16 位 Unicode 字符。在使用 QTcpSocket::write()
写入套接字之前,我使用 QByteArray
存储所有数据。必须遵循 Little Endianness。
如何从
QString
中获取 Unicode 8 位格式的数据到QByteArray
中(规范说字符类型对应于quint8
)?如何从
QString
中获取 Unicode 16 位格式的数据到QByteArray
(规范说字符类型对应于quint16
)?如何在所有情况下都保持 Little Endianness?
(我没有处理 Unicode/可变字节编码数据的经验)
最佳答案
查看文档是一个好的开始。
- QString::toUtf8()
- 创建一个以 BOM 开头的新 QByteArray .使用 QString::utf16()要获得 ushort 值,请将您想要的字节序中的上半部分和下半部分屏蔽到 QByteArray 中。
- UTF-8 没有/不需要字节顺序。将 16 位值放入 8 位数组以实现小字节序所需的 ushort 掩码将是
0x00FF
,然后是0xFF00
。 - 阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)今晚在家。
关于c++ - 将 Unicode UTF-8 和 UTF-16 数据写入 QByteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152695/