当前位置: 首页 > news >正文

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类型}

相关文章:

  • 【金仓数据库征文】- 国产化迁移实战:从Oracle到KingbaseES的平滑过渡
  • day32 学习笔记
  • C++学习之网络攻防以及信息搜索
  • MDF标准
  • 用 Python 打造打篮球字符动画!控制台彩色炫酷输出,抖音搞怪视频灵感还原
  • Dubbo负载均衡策略深度解析
  • 借助内核逻辑锁pagecache到内存
  • 大模型微调 - 自注意力机制
  • Doris表设计与分区策略:让海量数据管理更高效
  • contenthash 持久化缓存
  • 使用Go语言实现轻量级消息队列
  • 施工配电箱巡检二维码应用
  • verilog中实现单周期cpu的RVM指令(乘除取模)
  • 线程池总结
  • 匠心打造超级 ping,多运营商多协议全方位测试,sir.net 正式上线!
  • R7周:糖尿病预测模型优化探索
  • WebUI可视化:第6章:项目实战:智能问答系统开发
  • 并发编程【深度解剖】
  • 命名空间(C++)
  • RT Thread 发生异常时打印输出cpu寄存器信息和栈数据
  • 中国人民对外友好协会代表团访问美国
  • 山西10岁男孩遭生母和继父殴打遇害,案件庭审延期
  • 中国天主教组织发唁电对教皇去世表示哀悼
  • 第四届全民阅读大会在太原举办,李书磊出席并讲话
  • 为什么猛起身会头晕?你的身体在发出这个警报
  • 商务部谈中欧汽车谈判进展