前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

1、10进制转26进制

先了解16进制数 :十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、ABCDEF。 其中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

ContactAuthor