当前位置: 首页 > 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类型}
http://www.xdnf.cn/news/136639.html

相关文章:

  • HTML基础笔记
  • 【k8s】sidecar边车容器
  • 大型工程里 AI 编码困境重重,未来如何破局?
  • LeetCode -- Flora -- edit 2025-04-25
  • win10 如何关闭默认桌面上 了解此图片有关信息 提示信息
  • angular 实现可编辑可选择复制的表格
  • ROS 快速入门教程04
  • 使用 Pandas 进行多格式数据整合:从 Excel、JSON 到 HTML 的处理实战
  • 初识Redis · 哨兵机制
  • 微服务框架搭建
  • Linux文件管理
  • React 文件链条
  • Windows环境下常用网络命令使用
  • 百度搜索AI开放计划:助力开发者通过MCP Server连接用户和应用
  • C++学习:六个月从基础到就业——STL:函数对象与适配器
  • Bolsig+超详细使用教程
  • 专业软件开发全流程实践指南
  • 电子级甲基氯硅烷
  • 宁德时代25年时代长安动力电池社招入职测评SHL题库Verify测评语言理解数字推理真题
  • C语言 函数补充
  • TCP粘包拆包全攻略:Netty实战解决高并发通信难题
  • python源码打包为可执行的exe文件
  • C语言面试高频题——define 和typedef 的区别?
  • 双重检查锁DCL对象半初始化问题?
  • pnpm monoreop 打包时 node_modules 内部包 typescript 不能推导出类型报错
  • 电力系统惯性与惯量关系解析
  • day003
  • 你的图数传模块该换了!
  • Python Transformers 库介绍
  • RHEL与CentOS:从同源到分流的开源操作系统演进