今日算法之_191_10进制转26进制
前言
Github:https://github.com/HealerJean
1、10进制转26进制
先了解
16
进制数 :十六进制数的基数是16
,采用的数码是0、1、2、3、4、5、6、7、8、9、A
、B
、C
、D
、E
、F
。 其中A
-F
分别表示十进制数字10
-15
.十六进制数的技术规则是“逢十六进一各种进制都是以
0
为起点递增的,例如,八进制(0-7),16进制(0-F)。在本文中,我们设计的26进制是以A
为起点的,而不是0
,这是主要的不同点
26
进制转10
进制:ABZ
=1*26²
+2 * 26¹
+26*26°
=676
+52
+26
=754
1.1、解题思路
一个
26
进制和十进制相互转换的问题。序列A
-Z
依次对应序列1
-26
。进制转换的基本办法就是“取余法”,换算规则如下: ABZ = 126² + 2 * 26¹ + 2626°= 676 + 52 + 26 = 754 于是,我们就知道该如何设计一个十进制转换为26进制的算法了。
1.2、算法
@Test
public void test(){
int n = 26 ;
System.out.println((char)(1+ 64)); //A
System.out.println((char)(26 + 64)); //Z
System.out.println(cover(n)); //Z
}
public String cover(int n){
String str = "";
while (n != 0) {
int m = n % 26;
if (m == 0) {
m = 26;
}
str = (char) (m + 64) + str;
n = (n - m) /26;
}
return str;
}
1.3、测试
A
Z
Z