把UnicodeHex字符串转QString字符串

来源:互联网 发布:淘宝怎么刷信誉赚钱 编辑:程序博客网 时间:2024/06/10 05:20

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

有时我们或许需要把字节码流转换成文本,ansi/utf8的话是比较好转的,但对于unicode的话,是双字节文本的,转换起来还是需要一些特殊考虑的,例如大端小端的考虑。


把QString的UnicodeHex串转换到QString的文本

QString CTextHexDecode::unioceHexToText(QString sHexText){    sHexText = sHexText.remove(QRegularExpression(QString("[^0-9a-fA-F]"), QRegularExpression::NoPatternOption));    QByteArray srcByteArray = sHexText.toLocal8Bit();    std::wstring dest;    for (int i=3; i<=srcByteArray.length(); i=i+4)    {        wchar_t ch = convertHexToWChar(srcByteArray[i-3], srcByteArray[i-2], srcByteArray[i-1], srcByteArray[i]);        dest.push_back(ch);    }    return  QString::fromStdWString(dest);}

把Hex字符压缩到wchar中

inline unsigned char convertAscToHex(unsigned char ch){    if((ch >= '0') && (ch <= '9'))        return ch - '0';    else if((ch >= 'a') && (ch <= 'e'))        return ch - 'a' + 10;    else        return ch - 'A' + 10;}wchar_t convertHexToWChar(char ch1, char ch2, char ch3, char ch4){    // little Endian    unsigned short charLow = convertHexToChar(ch1, ch2);    unsigned short charHigh =  convertHexToChar(ch3, ch4);    return ( charHigh << 8) | charLow;}unsigned char convertHexToChar(char ch1, char ch2){    return (convertAscToHex(ch1) << 4) | convertAscToHex(ch2);}

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)


原创粉丝点击