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

Posted 思而不学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于QByteArray和十六进制的QString(char*)相互转换的主要内容,如果未能解决你的问题,请参考以下文章

《Qt数据类型》--QByteArray,QString,int,hex之间的转化

转载:QByteArray和QVariant

qbytearray是啥类型

QT读取二进制文件,然后将其转换为QString

Qt 学习笔记 4. QByteArray

QString和QByteArray的用法