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

Qt中使用qt自带的函数实现各种进制间的相互转换,easy.

文章目录

  • 一.十进制转各种进制
    • 第一种:使用QString的静态函数`number`
    • 第二种:使用QString的拼接函数`arg`
  • 二.各种进制相互转换

一.十进制转各种进制

第一种:使用QString的静态函数number

①使用QString的静态函数number即可,如我把字符串"8m"中的每个字符转化为ascii表中的十进制,然后在从十进制转化为16进制,如下
在这里插入图片描述
8字符对应的ascii表十进制为:56
m字符对应的ascii表十进制为:109
只用QString::number(int(c), 16);后,转化为36 6d
QString静态函数QString::number格式为

QString::number(十进制, 要转化的进制); 

函数原型如下:在这里插入图片描述

第二种:使用QString的拼接函数arg

这个Qt的QString函数arg中就全部封装好了,就是我们常用来字符串拼装用的.arg函数
进制转换arg函数参数说明:
①要转换的整数
②填充宽度
③要转换的进制,如2,8,16进制
④填充字符,就是指定宽度,当转化后没有填充上的,前面自动补填充字符
列子: 将10进制的100转化为16进制的字符串,转化后为:0064,100的16进制为64,所占宽度2,但指定宽度为4,所以前面两位没有填充上的用填充字符'0'进行填充
在这里插入图片描述
函数原型如下:
在这里插入图片描述

二.各种进制相互转换

要实现各种进制的相互转换,就要借助十进制作为中间人,进行转换啦,如2进制要转换为16进制,就先把2进制转换为十进制,然后在把10进制转换为16进制就行啦,即2进制->10进制->16进制,以此类推。

问题就是怎么将不是十进制的数转换为10进制呢?
简单,用QString的toInt函数即可,如果数太大,用toLong, toLongLong,转换成功返回一个十进制的数,如果转换失败,则返回0。
源码函数原型如下在这里插入图片描述
参数说明:
①一个bool的指针,通过将ok设置为false来报告失败,通过将ok设置为true来报告成功。
②要转化的字符串指定进制格式,如字符串是二进制的,就要填2
还是一样,举个例子,将二进制数11111111,转换为16进制的数

    QString bin = "11111111";

    bool ok;
    int dec = bin.toInt(&ok, 2);

    QString Hex = QString::number(dec, 16);

这个不难理解,就不多说了
到这里各种进制间的相互转换,就完成了,熟悉了,信手拈来。
也不难,Qt都写好封装的函数了,我们只要理解会用就行了,想要了解转换原理的,可以去看下qt的底层实现源码

相关文章:

  • 在产业互联网诞生之初,其仅被当成是互联网的衍生品和避风港
  • 录屏软件无水印免费,分享一款功能强大且免费的录屏软件
  • CHAPTER 8 为镜像添加SSH服务
  • tiny210v2-uboot之一初体验
  • String,StringBuilder,StringBuffer源码分析
  • PyTorch中contiguous、view、Sequential、permute函数的用法
  • 2022年终感悟-时光债务
  • 【python 基础篇 六】python的常用数据类型操作-------元组
  • Postgresql源码(98)lex与yacc的定制交互方式
  • QT自定义控件工程结构框架
  • 【算法题】1567. 乘积为正数的最长子数组长度
  • 如何摆脱原生家庭的影响
  • Typescript【类(class) 2、面向对象的特点 3、接口(Interface) 4、泛型(Generic)】
  • 【计算机体系结构】指令集体系结构、微体系结构简介
  • Linux 重置网卡流量统计
  • php sql注入
  • 向上沟通:你必须要注意的三个误区
  • 【设计模式】创建型模式·原型模式
  • 2023.1. Stimulsoft 报告和仪表板的新版本:Crack
  • Java中的包装类