ascii转16进制
QString str = "08_48_Jun_09_2020_测试";QString hex_str = str.toLocal8Bit().toHex(); // 将字符串转Hex//输出为30 38 5F 34 38 5F 4A 75 6E 5F 30 39 5F 32 30 32 30 5F B2 E2 CA D4
16进制转ascii
QString str = "30 38 5F 34 38 5F 4A 75 6E 5F 30 39 5F 32 30 32 30 5F B2 E2 CA D4";QByteArray byte = QString2Hex(ascii2); // 将字符串转16进制QString tem = QString::fromLocal8Bit(byte); // 将16进制转ascii// 将字符串转16进制QByteArray ShowTraceData::QString2Hex(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[i].toLatin1(); if(hstr == ' ') { i++; continue; } i++; if(i >= len) break; lstr = str[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;}// 将字符串转16进制char ShowTraceData::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);}