#include <QCoreApplication>
#include <QDebug>
#include <QDataStream>
QByteArray HexStringToByteArray(QString HexString)
{
bool ok;
QByteArray ret;
HexString = HexString.trimmed();
HexString = HexString.simplified();
QStringList sl = HexString.split(" ");
foreach (QString s, sl) {
if(!s.isEmpty()) {
char c = s.toInt(&ok,16)&0xFF;
if(ok){
ret.append(c);
}else{
qDebug()<<"非法的16进制字符:"<<s;
}
}
}
return ret;
}
QString ByteArrayToHexString(QByteArray &ba)
{
QDataStream out(&ba,QIODevice::ReadWrite);
QString buf;
while(!out.atEnd())
{
qint8 outChar = 0;
out >> outChar;
QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0')).toUpper() + QString(" ");
buf += str;
}
return buf;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
char cmd[7] = {0x40, 0x00, 0x00, 0x01, 0x00, 0x41, 0x0A};
char* cmdString = "40 00 00 01 00 41 0a";
QByteArray cmdBA = HexStringToByteArray(cmdString);
qDebug()<<ByteArrayToHexString(cmdBA);
return a.exec();
}