2021-09-12

本文介绍了在QT串口通信中,如何正确使用QByteArray和QString。强调QByteArray适用于存储任意字符,而QString仅适用于可显示字符。在数据组包时,避免将QByteArray转换为QString以防止丢包。还分享了QByteArray转换为16进制字符串的方法,以及在遇到非显示字符时的处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                       ## 标题QT串口组包技巧
                       QString 与 QByteArray的正确用法
  1. QString 与 QByteArray区别

QString只能存储可显示的字符,QByteArray 可以存储任何字符。在进行串口数据组包的时候,通过QByteArray字符数组组好的包,尽量不要转换成QString进行处理,因为这样很可能会因为QByteArray 数组里面含有\0等不能显示的字符,出现丢包。

  1. 用法举例

QByteArray arr;
arr.resize(3); //给arr数组分配3个字节
arr[0] = 49;//字符“1”的十进制ASCII值为49; 等同于 arr[0] = ‘1’;
arr[1] = 50; //字符“2”的十进制ASCII值为50; 等同于 arr[1] = ‘2’;
arr[2] = 51; //字符“3”的十进制ASCII值为51; 等同于 arr[2] = ‘3’;
QString str = arr;
str 值为 “123”;
上面赋值’1’、‘2’、'3’为可显示字符。那么,如果这样赋值:
arr[0] = 0;//空字符,不显示;
arr[1] = 1; //标题开始字符,不显示;
arr[2] = 2; //正文开始字符,不显示;
QString str = arr;
str值为空。

  1. QByteArray 小技速看

还有一个好用的东西分析一下,就是字符数组转16进制字符串显示方法,QByteArray arr = "123”转成“313233”,用QByteArray aa = arr.toHex().toUpper();这样转换出来的16进制为大写字符串。

  1. 谢谢关注,有问题大家留言探讨,一起学习成长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九江在天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值