QT中QBytearry转uint8_t

方法有点笨,有好方法望指教

此处接收的数据为mavlink协议数据,接收到的数据先转换为QString类型,mavlink数据按字节发送接收,故两个字符为一组,单个先转成整形,再转字符,再通过移位设定 高四位 低四位

QByteArray Res = serialPort->read(100); //从缓冲区读取数据

QString buffer = Res.toHex(); //以十六进制显示

uint8_t ibuf1;

uint8_t ibuf2;

uint8_t uRes1;

uint8_t uRes2;

uint8_t uRes[100];

for (int i = 0; i < buffer.size(); i+=2)

{

ibuf1=buffer.mid(i,1).toInt(0,16);//按16进制方式转整形

if(ibuf1<10)

{

uRes1 = ibuf1 + '0' - 48;

}else{

uRes1 = ibuf1 - 10 + 'a' - 87;

}

ibuf2=buffer.mid(i+1,1).toInt(0,16);

if(ibuf2<10)

{

uRes2 = ibuf2 + '0' - 48;

}else{

uRes2 = ibuf2 - 10 + 'a' - 87;

}

uRes[i] = uRes2 + (uRes1<<4);

qDebug("i=%d %02x %02x %02x %d %d",i,uRes[i],uRes1,uRes2,ibuf1,ibuf2);

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值