• 【Qt】16进制转换格式字符串及二进制


    16进制转换成字符串

    可调用QString类的静态方法number(),此方法为重载,有以下重载

    	// 第一个参数为输入值,第二个为数字的进制
        static QString number(int, int base=10);
        static QString number(uint, int base=10);
        static QString number(long, int base=10);
        static QString number(ulong, int base=10);
        static QString number(qlonglong, int base=10);
        static QString number(qulonglong, int base=10);
        static QString number(double, char f='g', int prec=6);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    示例:

    	QString strRes;
    
        // hex 2 string
        int nHex = 0xff;
        strRes = QString::number(nHex, 16);
        qDebug().noquote() << "[" << __FILE__ << __LINE__ << "]" << "hex 2 string:" << strRes;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结果:

    [ ..\16To2\mainwindow.cpp 17 ] hex 2 string: ff
    
    • 1

    运行:
    在这里插入图片描述

    16进制转换成格式字符串

    可调用QString类的静态方法static QString asprintf(const char *format, ...)
    第一个参数为格式,后面的可以输入值。
    0x:前缀加0x
    %x:表示以16进制形式输出整数
    示例:

        QString strRes;
    
        // hex 2 format string
        int nHex = 0xff;
        strRes = QString::asprintf("0x%x", nHex);
        qDebug().noquote() << "[" << __FILE__ << __LINE__ << "]" << "hex 2 format string:" << strRes;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结果:

    [ ..\16To2\mainwindow.cpp 17 ] hex 2 format string: 0xff
    
    • 1

    运行:
    在这里插入图片描述

    16进制转换成字符串并每两位加空格

    示例:

        QByteArray baHex = QByteArray::fromHex("11223344aabbccdd");
        QString strHex = baHex.toHex();
        strHex = strHex.replace(QRegularExpression("(..)"), "\\1 ");
        qDebug().noquote() << "[" << __FILE__ << __LINE__ << "]" << strHex;
    
    • 1
    • 2
    • 3
    • 4

    结果:

    [ ..\16To2\mainwindow.cpp 16 ] 11 22 33 44 aa bb cc dd 
    
    • 1

    运行:
    在这里插入图片描述
    分析

    1. 通过QByteArray::fromHex("11223344aabbccdd")将十六进制字符串"11223344aabbccdd"转换为一个QByteArray对象,其中每个字节的值是由对应的十六进制字符表示的。
    2. 通过hexArray.toHex()将QByteArray对象转换为一个QString对象,QString对象中每个字符都是对应字节的十六进制表示。
    3. 使用QRegularExpression("(..)")创建一个正则表达式对象,在这个正则表达式中,"(…)"代表匹配两个字符。
    4. 通过hexStr.replace(QRegularExpression("(..)"), "\\1 ")对QString对象进行替换操作,将每两个字符之间插入一个空格。替换操作中的"\1"表示将匹配到的两个字符替换为这两个字符自身并加一个空格。

    综合起来,这段代码的作用是将十六进制字符串"11223344aabbccdd"转换为一个格式良好的字符串,每两个字符之间用空格隔开,最终得到的结果是"11 22 33 44 aa bb cc dd"。

    16进制转换成二进制

    示例:

        QString str = "0XFF";
    
        int nValue = str.toInt(nullptr, 16);
        qDebug().noquote() << "[" << __FILE__ << __LINE__ << "]" << nValue;
    
        str = str.setNum(nValue, 2);
        qDebug().noquote() << "[" << __FILE__ << __LINE__ << "]" << str;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果:

    [ ..\16To2\mainwindow.cpp 15 ] 255
    [ ..\16To2\mainwindow.cpp 18 ] 11111111
    
    • 1
    • 2

    运行:
    在这里插入图片描述
    至此。

  • 相关阅读:
    C语言之:函数的声明和定义必备练习题
    重温缓存的正确使用姿势
    对深度学习的批评
    感恩节跟进技巧(附邮件模板)
    计算机网络-网络互连与互联网(三)
    441分2023级东南大学920专业基础综合信号和数字电路考研上岸经验分享信息科学与工程学院
    面试突击39:synchronized底层是如何实现的?
    Mybatis第三天
    MySQL基础篇【第六篇】| 存储引擎、事务、索引、视图、DBA命令、数据库设计三范式
    基于Qt窗口文件新建_编辑_打开_保存_另存_剪切和复制和粘贴项目(文件操作直接套源码)
  • 原文地址:https://blog.csdn.net/MrHHHHHH/article/details/133083274