Qt串口助手传输数据介绍
十六进制的数据在串口通信时可以在有限的协议长度内存储更多的信息,因此在串口通信中经常可见到十六 进制的出现。
在收发数据时用户可以选择16进制发送和16进制显示,因此需要将普通字符串转为16进制字符串,同时 也需要将16进制字符串转为普通字符串。
Qt将字符串转为16进制字符串
QString strToHexStr(const QString &str) {
QByteArray ba = str.toLocal8Bit();
QString hexStr = ba.toHex(' ');
return hexStr.toUpper(); // 转换为大写并返回
}
Qt将16进制字符串转普通字符串
QString hexStrToStr(const QString &hexStr)
{
QString s1 = hexStr;
s1.remove(QRegExp("\\s")); // 去除空格
QByteArray ba = QByteArray::fromHex(s1.toLocal8Bit());
return QString::fromLocal8Bit(ba);
}
注意:该转换中英文混合的字符串也适用。
测试
// 字符串转16进制
QString str1 = "您好helloworld哈哈";
QString res1 = strToHexStr(str1);
qDebug() << res1;
// 十六进制字符串转字符串
QString str2 = "C4 FA BA C3 68 65 6C 6C 6F 77 6F 72 6C 64 B9 FE B9 FE ";
QString res2 = hexStrToStr(str2);
qDebug() << res2;