c++ - 将十六进制 QString 转换为 UTF-8 QString

标签 c++ qt utf-8

在我的项目中,我需要将十六进制 QString ("c2a774657374") 转换为 UTF-8 编码的 QString ("§test")

我当前的函数 (HexToAscii) 确实将十六进制转换为 ascii,但没有正确编码:

void HexToInt(QString num_hex, int &num_int)
{
    uint num_uint;
    bool ok;
    num_uint = num_hex.toUInt(&ok,16);
    num_int = (int)num_uint;
}

void HexToAscii(QString &Input)//Input == "c2a774657374"
{
    int inputInt;
    QString tempInput;
    for(int i=0; i<Input.length()/2; i++)
    {
        HexToInt(Input.mid(i*2, 2), inputInt);
        tempInput.append((unsigned char)inputInt);
    }
    Input = tempInput;//Input == "§test"
}

但是,这只是转换每个字节,并不遵循 UTF-8 编码。 当我希望它是 ("§test") 时,我当前函数的结果是 ("§test")

如何编辑我的 HexToAscii 函数以转换为 UTF-8 编码的 QString?

感谢您的宝贵时间。

最佳答案

要获得十六进制编码字符串的解码拷贝,您可以使用 QByteArray::fromHex()静态函数。

QByteArray hex = QByteArray::fromHex("c2a774657374");
QString str = QString::fromUtf8(hex);

关于c++ - 将十六进制 QString 转换为 UTF-8 QString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28207437/

相关文章:

c# - 从非托管代码 : SAFEARRAY 调用托管 COM

c++ - C++中有纯抽象类吗?

c++ - Cuda 类型双关语 - memcpy vs UB union

c++ - Qt QXmlStreamReader 访问冲突

c++ - 在 std::string 中存储 unicode UTF-8 字符串

c++ - 在哪里可以找到具有多个源文件 (> 15) 的中型开源 C(也包括 C++)程序

c++ - 从 QGraphicsScene 移除 Qpixmap

python - 是否可以向 QCheckBox 添加 onclick 监听器?

java - 如何通过 HTTP 将 UTF-8 字符作为字符串发送

json - Lua - 解析 JSON 后打印 (♡) 字符