题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
import java.util.Scanner;
import static java.lang.Math.pow;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String target=in.next();
//考虑到其他进制转换,把前两位拿出来if,这里就是16进制就不用了
String value=target.substring(2).toUpperCase();
int res=0;
int j=0;
for(int i=value.length()-1;i>=0;i--){
char c=value.charAt(i);
int num=c-'0';//通过char型的减法得到int数字
if(num>9)//由于非数字c会得到大写字母,-0后的值大7,比如A-0=17
num-=7;
res+=num*(int)pow(16,j++);//+按位*16的j次方
}
//循环结束就得到10进制值
System.out.println(res);
}
}
查看15道真题和解析