今天看到一道面试题,说是给你一个十六进制的字符串,然后转换成对应的十进制数,乍一看还蛮简单,实际一敲,确实还行,就是着实用到了大量的API。
代码public static int hexToDec(String s) {
String s1 = s.toUpperCase(); // 全转大写
char[] chars = s1.toCharArray(); // 转成 char 数组
Stack stack = new Stack<>();
for (int i = 0; i < chars.length; i++) {
stack.push(chars[i]); // 放入栈中,倒序遍历
}
int sum = 0; // 定义总和
int size = stack.size(); // 要先赋值给 size ,不然 stack.pop() 之后 size 会变
for (int i = 0; i < size; i++) {
Character pop = stack.pop();
if (String.valueOf(pop).matches("[A-F]")) { // 如果是 A-F
sum += (Math.pow(16, i) * ((pop - 55))); // A的ASCII码为 65,取偏移量
} else { // 如果是纯数字
sum += Math.pow(16, i) * Integer.parseInt(String.valueOf(pop));
}
}
return sum;
}
如果有大神经过,有优化的方法,还请不吝赐教。



