QT中16进制字符串转汉字

最经在研究AT指令接受短信,短信是unicode编码,接受后须要根据系统的编码方案进行相关的转码
好比接受到了一串字符4F60597D,它是“你好”的unicode编码,一个unicode编码占两个字节,全部能够使用4个16进制数表示:4F60->你,597D->好。那咱们怎么转换了?
在QString中存放的是QChar,你能够把她看成ushort来看待。由于Qt自己的编码方案就是unicode。app

QTextCodec *codec = QTextCodec::codecForName("utf-8");  
QString str = "0891683108500145F1240D91685143256178F0000831214281659423044F60597D";  
QString t = str.mid(58);  
QStringList s;  

for(int i = 0;i < t.length();i += 4) {  
s.append(t.mid(i,4));  
}  
QString t1;  

foreach (const QString &t, s) {  
t1.append(t.toUShort(0,16));  
}  

QString re = codec->fromUnicode(t1);  
qDebug() << QObject::trUtf8(re.toLatin1().data());  

先将要处理的字符串按4个一段分割而后转化成ushort也就是QChar而后拼成一个QString,其实两步能够化成一步作。编码

参考:http://blog.csdn.net/zhx6044/article/details/17656989spa

相关文章
相关标签/搜索