QT--字符串转十六进制
前言
治愈自己最好的方式,
就是忙碌和早睡。
一、字符串转为十六进制
代码: .h文件
public: static char ConvertHexChar(char c); static QByteArray QString2Hex(QString hexStr);
.cpp文件
//字符串 QByteArray MainWindow::QString2Hex(QString hexStr) { QByteArray senddata; int hexdata, lowhexdata; int hexdatalen = 0; int len = hexStr.length(); senddata.resize(len/2); char lstr, hstr; for(int i = 0; i < len; ) { //将第一个不为 的字符赋给hstr; hstr = hexStr[i].toLatin1(); if(hstr == ) { i++; continue; } i++; //当i >= len时,跳出循环 if(i >= len) break; //当i < len时,将下一个字符赋值给lstr; lstr = hexStr[i].toLatin1(); //将hstr和lstr转换为0-15的对应数值 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 MainWindow::ConvertHexChar(char c) { if((c >= 0) && (c <= 9)) return c - 0x30; else if((c >= A) && (c <= F)) return c - A + 10;//A = 65; else if((c >= a) && (c <= f)) return c - a + 10; else return -1; }
在需要转换的地方可采取调用
QByteArray QString2Hex( hexStr);
二、直接调用函数
.tohex()是将字符串转换成16进制。 .fromhex()是将十六进制转换成字符串。
//选择十六进制框 void MainWindow::on_sendBase_checkbox_stateChanged(int arg1) { QString str=ui->sendtextEdit->document()->toPlainText();//获取发送的信息 if(arg1==0)//不选 { QByteArray sendData1=str.toUtf8(); sendData1=sendData1.fromHex(sendData1);//从QByteArray转换为QString ui->sendtextEdit->document()->setPlainText(sendData1); } else { QByteArray sendData=str.toUtf8();//QString转换为QByteArray sendData=sendData.toHex( ).toUpper();//转换成QByteArray -> 转换成16进制数,按空格分开 ui->sendtextEdit->document()->setPlainText(sendData); } }
总结
善于总结,多进一步。
下一篇:
【高速公路休息站充电规划】c++