蓝桥杯算法题库 进制转换_16转10进制
题目
问题描述
*问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
*注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入 FFFF 样例输出 65535
解题思路
1、将输入的16进制数用字符数组保存每一位;
2、十六进制数按权展开、相加即得十进制数。具体见图
//java代码
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
char[] c = sc.next().toCharArray();
int[] n = new int[c.length];
long sum = 0;
for (int i = c.length - 1; i >= 0; i--) {
if (c[i] - '9' > 0) {
n[i] = c[i] - 'A' + 10;
} else {
n[i] = c[i] - '0';
}
}
//调用math.pow函数计算次方
for (int i = n.length - 1; i >= 0; i--) {
sum = sum + (long) (n[i] * Math.pow(16, n.length - 1 - i));
}
System.out.println(sum);
}