栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QT ——16进数(HEX)与 QByteArray 的转换

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QT ——16进数(HEX)与 QByteArray 的转换

提示:至目前版本 QT 中,QByteArray 支持的基础数据类型多为 char

文章目录
  • 前言
  • 一、将16进数(HEX)转换为 Char,生成新的 QByteArray
    • 1. 采用构造函数生成
    • 2. 采用系统提供静态函数生成
  • 二、将字符串转化为 QByteArray
    • 1. 采用系统提供的静态函数生成
  • 三、其它类型不能直接生成 QByteArray
    • 1. 其它类型变量可以靠赋值转换
    • 2. 直接赋值转换
  • 总结


前言

QT 对于文件、设备、通讯端口之类的数据交换,采用 QByteArray 类进行,所以在嵌入式开发中经常操作该类以获取或设置数据,本文总结该类的使用。


一、将16进数(HEX)转换为 Char,生成新的 QByteArray

提示:单个字符的标识为:char ch = ‘xab’;
注意:‘xff’ 在QT内为16进制原数的合法表述,但其数值对 char 类型来说已经超范围了

1. 采用构造函数生成
    static const char ch0 = 'xab';
    QByteArray byteAry0(&ch0);
    qDebug() << "byte array 0 is:" << byteAry0;		// ret 0xAB

    static const char ch1[] = {'xff', 'x33', 'x56', 'xab'};
    QByteArray byteAry1(ch1);
    qDebug() << "byte array 1 is:" << byteAry1;		// ret 0xff...
2. 采用系统提供静态函数生成
    static const char ch2[] = {
       'x00', 'x00', 'x03', 'x84', 'x78', 'x9c', 'x3b', 'x76',
       'xec', 'x18', 'xc3', 'x31', 'x0a', 'xf1', 'xcc', 'x99',
       'x6d', 'x5b'
   };
   QByteArray byteAry2 = QByteArray::fromRawData(ch2, sizeof(ch2));
   qDebug() << "byte array 2 is:" << byteAry2;		// ret 0x00 00 03 84..

将基础数据转化为 QByteArray 后,在后续QT的处理中,很少再需要转换回字符串数组进行运算,有时会转换为 qint32 等数值型进行运算。

二、将字符串转化为 QByteArray 1. 采用系统提供的静态函数生成
   QByteArray byteAry3 = QByteArray::fromHex("abccddff");
   qDebug() << "byte array 3 is:" << byteAry3;		// ret 0xAB CC DD..
三、其它类型不能直接生成 QByteArray 1. 其它类型变量可以靠赋值转换
   uint8_t num4 = 0xff;
   static const char ch4 = ~num4 + 1;
   QByteArray byteAry4(&ch4);
   qDebug() << "byte array 4 is:" << byteAry4;		// ret 0x01

   uint16_t num5 = 16;
   static const char ch5 = num5;
   QByteArray byteAry5(&ch5);
   qDebug() << "byte array 5 is:" << byteAry5;		// ret 0x10

赋值所带来的隐形强制类型转换将被体现出来

2. 直接赋值转换
   static const char ch6 = 250;
   QByteArray byteAry6(&ch6);
   qDebug() << "byte array 6 is:" << byteAry6;		// ret 0xFA

数值将能够超过 char 类型本身所代表的 -127 to 128 限制,直接以16进制原始状态写入内存

总结

后续进一步总结。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号