QByteArray 直接赋值
通讯中会经常用到的,由可输入不可输入字符组成的常量报文串,如果是char*:
QByteArray qba ;
char ch[] = {'\x00','\x01','\x02','\x30','\x31','\x41','\x42','a','b','\xf1','\xf22'};
char* ---> QByteArray:
qba.append(ch,sizeof(ch));
或者 qba.fromHex("00010230314142f1f2");
QString(Hex格式) ---> QByteArray 这个要稍麻烦一点
QString qstrHex="EB A8C5 2456 ";
//去掉所有空格及格式化符
qstrHex = qstrHex.remove(QRegExp("\\s"));
qstrHex = qstrHex.simplified();
bool ok;//用于检查字符是否合法
for(int i=0;i<qstrHex.length();i+=2)
{
char c = qstrHex.mid(i,2).toInt(&ok,16)&0xFF;
if(ok)
qba.append(c);
else
qDebug()<<"非法的16进制字符:"<<qstrHex.mid(i,2);
}
//打出来验证一下
qDebug()<<qba;
// ui->lineEdit->setText(qba.toHex());
如果报文全是可输入字符,那就简单多了:
qstr = "hello QT";
qba = qstr.toLocal8Bit()
QByteArray --->16进制QString 这个不用多说:
QString qstr = qba.toHex;
QString和QByteArray确实要比MFC的CString,CByteArray好用得多。