欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Qt知识点1『16进制数值与文本互相转换』

Qt知识点1『16进制数值与文本互相转换』

2025/4/28 21:18:41 来源:https://blog.csdn.net/qq_40945965/article/details/147513090  浏览:    关键词:Qt知识点1『16进制数值与文本互相转换』

工作中可能会遇到QByteArray保存着16进制的数据,例如网络传输中的数据在抓包软件下就会显示为16进制的文本格式。本次是在串口通讯首发消息时遇到的这类转换问题,做一下记录。
一、16进制的文本字符串如何转换数值

解决:形如QString("01")、QString("A0")等的字符串,希望转换为数值1和160保存在int中。bool ok = false;int value = QString("01").toInt(&ok, 16));// 或者QString("01").toInt(nullptr, 16))

二、数值如何转换为16进制的文本字符串

解决:数值160希望转换为16进制的文本字符串"A0"。int value = 160;QString text = QString::number(value, 16).toUpper();

三、16进制的文本字符串如何转换为QByteArray,使得每个字节存储一个16进制数

解决:QLineEdit中形如"01 A0 CB 0E"的文本字符串,希望存储在QByteArray中,并且每个字节存储一个16进制数。注意,QByteArray默认存储char类型数据,所以取值的时候需要qint8即unsigned char类型转换。其实理解起来很简单,就是把"01"这样的16进制字符串转换为数值,Qt中使用QString类的toInt()函数即可。若需要再将QByteArray中存储的内容取出来,只需要将每一个字节的内容用qint8强制转换就行了。QByteArray ba;QStringList dataList = ui->lineEdit->text().trimmed().split(" ", QString::SkipEmptyParts);int dataSize = dataList.size();for (int i = 0; i < dataSize; ++i){bool ok = false;ba.append((char)dataList.at(i).toInt(&ok, 16));// 这里必须用一个字节大小的char或unsigned char类型}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词