码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-01-31 18:40:05      阅读:947      评论:0      收藏:0      [点我收藏+]

标签:进制   imp   lis   char   split   []   include   pre   hex   

 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 }

 

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

标签:进制   imp   lis   char   split   []   include   pre   hex   

原文地址:https://www.cnblogs.com/ch122633/p/8393406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!