QByteArray和十六进制的QString(char*)相互转换

 1 #include <QCoreApplication>
 2 #include <QDebug>
 3 #include <QDataStream>
 4 
 5 QByteArray HexStringToByteArray(QString HexString)
 6 {
 7     bool ok;
 8     QByteArray ret;
 9     HexString = HexString.trimmed();
10     HexString = HexString.simplified();
11     QStringList sl = HexString.split(" ");
12 
13     foreach (QString s, sl) {
14         if(!s.isEmpty()) {
15             char c = s.toInt(&ok,16)&0xFF;
16             if(ok){
17                 ret.append(c);
18             }else{
19                 qDebug()<<"非法的16进制字符:"<<s;
20             }
21         }
22     }
23     return ret;
24 }
25 
26 QString ByteArrayToHexString(QByteArray &ba)
27 {
28     QDataStream out(&ba,QIODevice::ReadWrite);   //将str的数据 读到out里面去
29     QString buf;
30     while(!out.atEnd())
31     {
32         qint8 outChar = 0;
33         out >> outChar;   //每次一个字节的填充到 outchar
34         QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0')).toUpper() + QString(" ");   //2 字符宽度
35         buf += str;
36     }
37     return buf;
38 }
39 
40 int main(int argc, char *argv[])
41 {
42     QCoreApplication a(argc, argv);
43     char cmd[7] = {0x40, 0x00, 0x00, 0x01, 0x00, 0x41, 0x0A};
44     char* cmdString = "40 00 00 01 00 41 0a";
45     QByteArray cmdBA = HexStringToByteArray(cmdString);
46     qDebug()<<ByteArrayToHexString(cmdBA);
47 
48     return a.exec();
49 }

 

posted @ 2018-01-31 17:14  习惯就好233  阅读(7929)  评论(0编辑  收藏  举报