解题思路:
与二进制转换成十进制的做法差不多。假设一个二进制数1100,那么这个二进制代表的十进制可以这样计算:0*Math.pow(2,0) + 0*Math.pow(2,1) + 1*Math.pow(2,2) + 1*Math.pow(2,3) = 12。只需要注意二十六进制数A代表十进制的1,B代表十进制的2...,并将底数变为26即可。
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
//接收用户输入
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String next = scanner.next();
int twentyToDecimai = twentyToDecimai(next);
System.out.println(twentyToDecimai + "");
}
}
public static int twentyToDecimai(String s) {
int result = 0;
if (s == null || s.length() == 0) {
return result;
}
char[] charArray = s.toCharArray();
//遍历字符数组,从数组的尾部开始计算
for (int i = charArray.length - 1 ; i >= 0; i--) {
//拿到对应字符对应的数字
int val = charArray[i] - 64;
//拿到指数
int exp = charArray.length - i - 1;
result += val * Math.pow(26, exp);
}
return result;
}
}