Qt将UTF16十六进制字符串转换为QString
Qt Convert UTF16 Hex string to QString
我想将十六进制和utf16编解码器中的字符串转换为QString例如,就像我从这个代码中获得的:
QString str1 = QString::fromWCharArray(L"x0633x0644x0627x0645"); // what I want
但是当我尝试下面的代码时,每一件事都出错了,正确的方法是什么。
QByteArray hex = QByteArray::fromHex("0633064406270645");
// wrong text in str2 it should be equal to str1
QString str2 = QString::fromUtf16((char16_t*)hex.data());
此代码有什么问题?
QByteArray hex = QByteArray::fromHex("0633064406270645");
// wrong text in str2 it should be equal to str1
QString str2 = QString::fromUtf16((char16_t*)hex.data());
恩迪亚是!这相当于L"x3306x4406x2706x4506"
,而不是L"x0633x0644x0627x0645"
。
因此,为了克服这个问题,您可以将BOM添加到字符串中
QByteArray hex = QByteArray::fromHex("FEFF0633064406270645");
QString str2 = QString::fromUtf16((char16_t*)hex.data());
没有测试,但应该可以解决问题。
另一种解决方案是翻转单个UTF-16字符中的字节顺序(将其更改为小端序)。
QByteArray hex = QByteArray::fromHex("3306440627064506");
QString str2 = QString::fromUtf16((char16_t*)hex.data());
相关文章:
- 将 Qvector<uint8_t> 转换为 QString
- 将 hh:mm:ss.zzz 时间 QString 转换为毫秒的单行函数?
- 如何将包含指数的 QString 转换为C++中的双倍?
- 删除unicode def后,无法将QString转换为TCHAR
- 如何将QBytearrayBCD转换为十进制QString表示
- 在Qt中将QString转换为ASCII值,反之亦然
- 如何在Windows上将Qt QString转换为LPCTSTR
- 在不损失阿尔法值的情况下将 QColor 转换为 QString
- 如何阻止反斜杠在从 QString 到 char 数组的转换中取消?
- 将 QString 转换为 QJsonArray
- QByteArray 和 QString 转换的问题
- QT中不允许使用一行多个转换,例如qString到char*
- q致命参数:将 QString 转换为常量字符* 会导致警告"format string is not a string literal"
- 我可以使用模板在 QString 和 std::string 之间进行自动转换吗?
- 将QString转换为uintptr_t,qt / c
- 如何将QByteArray转换为QString?
- 无法将 QString 转换为 Const Char*
- 错误:请求从“ void”转换为“ QString”的非量表类型
- 如何将STD :: String转换为QString保留值,反之亦然
- 从文件中的字符串转换 QString