Qt 16进制字符串与QByteArray,char*互转简单方法

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好用得多。

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值