进制转换
本章介绍常见4个进制之间的转换,附带思路和源码
注意⚠️:源码转换存入字符串后,很多都是倒序的,需要倒序输出
二进制转其他
二进制转八进制
思路:从最低位开始,每三位的值汇总相加存入字符串
Source code
1 | // str ==> 二进制 ; s ==> 八进制 |
二进制转十六进制
思路:和八进制类似,但是四位汇总相加,且要判断大于十则转换为字母ABCDEF
Source code
1 | // str ==> 二进制 ; s ==> 十六进制 |
二进制转十进制
思路:将每一位乘以进制数的位次方数,值相加
Source code
1 | // str ==> 二进制 ; n ==> 十进制 |
十进制转其他
十进制转其他进制方法都是相同的
思路:不断将十进制取模对应的进制数,并判断大于十则转换成字母,存入字符串,再把十进制除以对应的进制数
Source code
1 | // n ==> 十进制 ; d ==> 进制数(2、8、16) |
八进制转其他
八进制转二进制
思路:将八进制的每一位拆解成对应的3位二进制存入字符串
注意⚠️:输出时,记得越过前导0
Source code
1 | for(int i=0;i<str.size();i++){ |
八进制转十进制
思路:将八进制的每一位乘以进制数的位次方数,再把值相加
Source code
1 |
|
八进制转十六进制
八进制无法直接转十六进制,需要先转为十进制或二进制,再转为十六进制
十六进制转其他
十六进制转二进制
思路:和八进制类似,不过是将一位拆解成四位二进制数,大于十的字母注意转换成整数型的数字
注意⚠️:输出时,记得越过前导0
Source code
1 |
|
十六进制转八进制
十六进制无法直接转为八进制,需要先转为二进制或十进制,再转为八进制
十六进制转十进制
思路:将十六进制的每一位乘以进制数的位次方数,再把值相加
Source code
1 | // str ==> 十六进制 ; ans ==> 十进制 |