zoukankan      html  css  js  c++  java
  • QT中16进制字符串转汉字

    最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码
    比如接受到了一串字符4F60597D,它是“你好”的unicode编码,一个unicode编码占两个字节,所有可以使用4个16进制数表示:4F60->你,597D->好。那我们怎么转换了?
    在QString中存放的是QChar,你可以把她当作ushort来看待。因为Qt本身的编码方案就是unicode。

    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/17656989

  • 相关阅读:
    IDEA开发 Scala 项目
    mvn编译时绕过本地jar去maven仓库下载问题
    三角化(转载)
    分布式文件服务器介绍(转载)
    VSCode 设置侧边栏字体大小
    libLas编译
    OSG编译
    vcpkg.exe安装与应用
    OpenCASCADE编译
    gl2ps编译
  • 原文地址:https://www.cnblogs.com/findumars/p/4314721.html
Copyright © 2011-2022 走看看