文章目录
- 一.十进制转各种进制
- 第一种:使用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的底层实现源码



















