一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

1.QString存储十六进制内容

我要发送的十六进制内容是 01 05 04 01 00
将其储存在QString字符串中

1 QString str;
2 str = "0105040100";

2.核心语句

将两位的字符串转换为16进制的Int型数字,然后通过强制类型转换成char类型的字符。
(具体作用方式我还没去看,但是有用)

(char)str.mid(i, 2).toInt(&ok, 16)

3.编写函数进行转换

创建一个返回类型为QByteArray的函数 Hexstring2QByteArray
通过每两位两位的方式将所有内容转为char再用QByteArray进行尾部添加

 1 QByteArray Hexstring2QByteArray(QString str)
 2 {
 3     QByteArray Hexstr;
 4     bool ok;
 5     for (int i = 0; i < str.size(); i += 2)
 6     {
 7         Hexstr.append((char)str.mid(i, 2).toInt(&ok, 16));
 8     }
 9     return Hexstr;
10 }

这个函数能够将16进制内容的QString字符串转为QByteArray数组进行发送
结果如图所示,这是串口工具接收到的我的程序发回的16进制QByteArray

 

posted on 2024-03-11 19:27  一杯清酒邀明月  阅读(443)  评论(0编辑  收藏  举报