【发布时间】:2015-01-29 05:13:00
【问题描述】:
在我的项目中,我需要将十六进制 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?
感谢您的宝贵时间。
【问题讨论】:
-
QString 内部不使用 UTF-8 编码,因此不清楚“UTF-8 编码的 QString”是什么意思。