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

一.十进制转各种进制

第一种:使用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的底层实现源码

猜你喜欢

转载自blog.csdn.net/qq_44667165/article/details/128705637