## 标题QT串口组包技巧
QString 与 QByteArray的正确用法
- QString 与 QByteArray区别
QString只能存储可显示的字符,QByteArray 可以存储任何字符。在进行串口数据组包的时候,通过QByteArray字符数组组好的包,尽量不要转换成QString进行处理,因为这样很可能会因为QByteArray 数组里面含有\0等不能显示的字符,出现丢包。
- 用法举例
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值为空。
- QByteArray 小技速看
还有一个好用的东西分析一下,就是字符数组转16进制字符串显示方法,QByteArray arr = "123”转成“313233”,用QByteArray aa = arr.toHex().toUpper();这样转换出来的16进制为大写字符串。
- 谢谢关注,有问题大家留言探讨,一起学习成长。