首页 > 其他 > 详细

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

时间:2018-01-31 17:37:56      阅读:1141      评论:0      收藏:0      [点我收藏+]
 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*)相互转换

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!