qt 实现字符串与十六进制hex数据相互转换

例程代码:
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);

例程(支持中文),正常转换效果:
在这里插入图片描述
格式不正确转换失败:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值