例程代码:
https://gitee.com/dreamfly233/qt_sample/tree/master/qt_string_to_hex
hex数据在各种通信协议中比较常见,一般在串口调试助手中的互转比较常用,本文实现一个相对实用的qt中字符与hex互转的实现。
核心代码比较简单:
QByteArray charArray,hexArray;
//字符数组转为hex数组
hexArray= charArray.toHex();
//字符数组转为hex数组,添加空格分割并统一为大写格式
hexArray= charArray.toHex(' ').toUpper();
//hex数组转为字符数组
charArray=QByteArray::fromHex(hexArray);
//fromHex并不能很好地检测非法字符,转换前还需要判断一下是否存在不符合格式的hex数据
//使用正则表达式判断,为true说明不存在有误数据
n.contains(QRegExp("^[0-9a-fA-F]{1,}$"))
在Qt中,用户在LineEdit或TextEdit中输入的字符都是QString类型,进行上述转换前还需要从QString转为QByteArray
//QString与QByteArray的互转:
QString string;
QByteArray byteArray;
//使用utf8编码转为QByteArray,这里与编码有关,不同的编码结果不同,不展开
byteArray=string.toUtf8();
//转为QString
string=QString(byteArray);
例程(支持中文),正常转换效果:
格式不正确转换失败: