千家信息网

Qt函数体怎么使用

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"Qt函数体怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt函数体怎么使用"吧!函数名 //字节数组转Ascii字符
千家信息网最后更新 2025年02月01日Qt函数体怎么使用

这篇文章主要讲解了"Qt函数体怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt函数体怎么使用"吧!

函数名

    //字节数组转Ascii字符串    static QString byteArrayToAsciiStr(const QByteArray &data);    //16进制字符串转字节数组    static QByteArray hexStrToByteArray(const QString &str);    static char convertHexChar(char ch);    //Ascii字符串转字节数组    static QByteArray asciiStrToByteArray(const QString &str);    //字节数组转16进制字符串    static QString byteArrayToHexStr(const QByteArray &data);

函数体

QString QUIHelper::byteArrayToAsciiStr(const QByteArray &data){    QString temp;    int len = data.size();    for (int i = 0; i < len; i++) {        //0x20为空格,空格以下都是不可见字符        char b = data.at(i);        if (0x00 == b) {            temp += QString("\\NUL");        } else if (0x01 == b) {            temp += QString("\\SOH");        } else if (0x02 == b) {            temp += QString("\\STX");        } else if (0x03 == b) {            temp += QString("\\ETX");        } else if (0x04 == b) {            temp += QString("\\EOT");        } else if (0x05 == b) {            temp += QString("\\ENQ");        } else if (0x06 == b) {            temp += QString("\\ACK");        } else if (0x07 == b) {            temp += QString("\\BEL");        } else if (0x08 == b) {            temp += QString("\\BS");        } else if (0x09 == b) {            temp += QString("\\HT");        } else if (0x0A == b) {            temp += QString("\\LF");        } else if (0x0B == b) {            temp += QString("\\VT");        } else if (0x0C == b) {            temp += QString("\\FF");        } else if (0x0D == b) {            temp += QString("\\CR");        } else if (0x0E == b) {            temp += QString("\\SO");        } else if (0x0F == b) {            temp += QString("\\SI");        } else if (0x10 == b) {            temp += QString("\\DLE");        } else if (0x11 == b) {            temp += QString("\\DC1");        } else if (0x12 == b) {            temp += QString("\\DC2");        } else if (0x13 == b) {            temp += QString("\\DC3");        } else if (0x14 == b) {            temp += QString("\\DC4");        } else if (0x15 == b) {            temp += QString("\\NAK");        } else if (0x16 == b) {            temp += QString("\\SYN");        } else if (0x17 == b) {            temp += QString("\\ETB");        } else if (0x18 == b) {            temp += QString("\\CAN");        } else if (0x19 == b) {            temp += QString("\\EM");        } else if (0x1A == b) {            temp += QString("\\SUB");        } else if (0x1B == b) {            temp += QString("\\ESC");        } else if (0x1C == b) {            temp += QString("\\FS");        } else if (0x1D == b) {            temp += QString("\\GS");        } else if (0x1E == b) {            temp += QString("\\RS");        } else if (0x1F == b) {            temp += QString("\\US");        } else if (0x7F == b) {            temp += QString("\\x7F");        } else if (0x5C == b) {            temp += QString("\\x5C");        } else if (0x20 >= b) {            temp += QString("\\x%1").arg(decimalToStrHex((quint8)b));        } else {            temp += QString("%1").arg(b);        }    }    return temp.trimmed();}QByteArray QUIHelper::hexStrToByteArray(const QString &str){    QByteArray senddata;    int hexdata, lowhexdata;    int hexdatalen = 0;    int len = str.length();    senddata.resize(len / 2);    char lstr, hstr;    for (int i = 0; i < len;) {        hstr = str.at(i).toLatin1();        if (hstr == ' ') {            i++;            continue;        }        i++;        if (i >= len) {            break;        }        lstr = str.at(i).toLatin1();        hexdata = convertHexChar(hstr);        lowhexdata = convertHexChar(lstr);        if ((hexdata == 16) || (lowhexdata == 16)) {            break;        } else {            hexdata = hexdata * 16 + lowhexdata;        }        i++;        senddata[hexdatalen] = (char)hexdata;        hexdatalen++;    }    senddata.resize(hexdatalen);    return senddata;}char QUIHelper::convertHexChar(char ch){    if ((ch >= '0') && (ch <= '9')) {        return ch - 0x30;    } else if ((ch >= 'A') && (ch <= 'F')) {        return ch - 'A' + 10;    } else if ((ch >= 'a') && (ch <= 'f')) {        return ch - 'a' + 10;    } else {        return (-1);    }}QByteArray QUIHelper::asciiStrToByteArray(const QString &str){    QByteArray buffer;    int len = str.length();    QString letter;    QString hex;    for (int i = 0; i < len; i++) {        letter = str.at(i);        if (letter == "\\") {            i++;            letter = str.mid(i, 1);            if (letter == "x") {                i++;                hex = str.mid(i, 2);                buffer.append(strHexToDecimal(hex));                i++;                continue;            } else if (letter == "N") {                i++;                hex = str.mid(i, 1);                if (hex == "U") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "L") {           //NUL=0x00                        buffer.append((char)0x00);                        continue;                    }                } else if (hex == "A") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "K") {           //NAK=0x15                        buffer.append(0x15);                        continue;                    }                }            } else if (letter == "S") {                i++;                hex = str.mid(i, 1);                if (hex == "O") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "H") {           //SOH=0x01                        buffer.append(0x01);                        continue;                    } else {                    //SO=0x0E                        buffer.append(0x0E);                        i--;                        continue;                    }                } else if (hex == "T") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "X") {           //STX=0x02                        buffer.append(0x02);                        continue;                    }                } else if (hex == "I") {        //SI=0x0F                    buffer.append(0x0F);                    continue;                } else if (hex == "Y") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "N") {           //SYN=0x16                        buffer.append(0x16);                        continue;                    }                } else if (hex == "U") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "B") {           //SUB=0x1A                        buffer.append(0x1A);                        continue;                    }                }            } else if (letter == "E") {                i++;                hex = str.mid(i, 1);                if (hex == "T") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "X") {           //ETX=0x03                        buffer.append(0x03);                        continue;                    } else if (hex == "B") {    //ETB=0x17                        buffer.append(0x17);                        continue;                    }                } else if (hex == "O") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "T") {           //EOT=0x04                        buffer.append(0x04);                        continue;                    }                } else if (hex == "N") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "Q") {           //ENQ=0x05                        buffer.append(0x05);                        continue;                    }                } else if (hex == "M") {        //EM=0x19                    buffer.append(0x19);                    continue;                } else if (hex == "S") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "C") {           //ESC=0x1B                        buffer.append(0x1B);                        continue;                    }                }            } else if (letter == "A") {                i++;                hex = str.mid(i, 1);                if (hex == "C") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "K") {           //ACK=0x06                        buffer.append(0x06);                        continue;                    }                }            } else if (letter == "B") {                i++;                hex = str.mid(i, 1);                if (hex == "E") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "L") {           //BEL=0x07                        buffer.append(0x07);                        continue;                    }                } else if (hex == "S") {        //BS=0x08                    buffer.append(0x08);                    continue;                }            } else if (letter == "C") {                i++;                hex = str.mid(i, 1);                if (hex == "R") {               //CR=0x0D                    buffer.append(0x0D);                    continue;                } else if (hex == "A") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "N") {           //CAN=0x18                        buffer.append(0x18);                        continue;                    }                }            } else if (letter == "D") {                i++;                hex = str.mid(i, 1);                if (hex == "L") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "E") {           //DLE=0x10                        buffer.append(0x10);                        continue;                    }                } else if (hex == "C") {                    i++;                    hex = str.mid(i, 1);                    if (hex == "1") {           //DC1=0x11                        buffer.append(0x11);                        continue;                    } else if (hex == "2") {    //DC2=0x12                        buffer.append(0x12);                        continue;                    } else if (hex == "3") {    //DC3=0x13                        buffer.append(0x13);                        continue;                    } else if (hex == "4") {    //DC2=0x14                        buffer.append(0x14);                        continue;                    }                }            } else if (letter == "F") {                i++;                hex = str.mid(i, 1);                if (hex == "F") {               //FF=0x0C                    buffer.append(0x0C);                    continue;                } else if (hex == "S") {        //FS=0x1C                    buffer.append(0x1C);                    continue;                }            } else if (letter == "H") {                i++;                hex = str.mid(i, 1);                if (hex == "T") {               //HT=0x09                    buffer.append(0x09);                    continue;                }            } else if (letter == "L") {                i++;                hex = str.mid(i, 1);                if (hex == "F") {               //LF=0x0A                    buffer.append(0x0A);                    continue;                }            } else if (letter == "G") {                i++;                hex = str.mid(i, 1);                if (hex == "S") {               //GS=0x1D                    buffer.append(0x1D);                    continue;                }            } else if (letter == "R") {                i++;                hex = str.mid(i, 1);                if (hex == "S") {               //RS=0x1E                    buffer.append(0x1E);                    continue;                }            } else if (letter == "U") {                i++;                hex = str.mid(i, 1);                if (hex == "S") {               //US=0x1F                    buffer.append(0x1F);                    continue;                }            } else if (letter == "V") {                i++;                hex = str.mid(i, 1);                if (hex == "T") {               //VT=0x0B                    buffer.append(0x0B);                    continue;                }            } else if (letter == "\\") {                //如果连着的是多个\\则对应添加\对应的16进制0x5C                buffer.append(0x5C);                continue;            } else {                //将对应的\[前面的\\也要加入                buffer.append(0x5C);                buffer.append(letter.toLatin1());                continue;            }        }        buffer.append(str.mid(i, 1).toLatin1());    }    return buffer;}QString QUIHelper::byteArrayToHexStr(const QByteArray &data){    QString temp = "";    QString hex = data.toHex();    for (int i = 0; i < hex.length(); i = i + 2) {        temp += hex.mid(i, 2) + " ";    }    return temp.trimmed().toUpper();}

感谢各位的阅读,以上就是"Qt函数体怎么使用"的内容了,经过本文的学习后,相信大家对Qt函数体怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0