package _2_base;
import java.util.Scanner;
public class _11_16To10 {
public static void main(String[] args) {
jinzhi2();
}
/*
// 蓝桥杯官网上提交只有75分可能可能可能是因为String string或者int sum的长度不够!!
public static void jinzhi() {
Scanner sc=new Scanner(System.in);
String string=sc.next();
int sum=0;
for (int i = 0; i < string.length(); i++) {
if(string.charAt(i)=='A'||string.charAt(i)=='B'||string.charAt(i)=='C'||string.charAt(i)=='D'||string.charAt(i)=='E'||string.charAt(i)=='F') {
sum+=(string.charAt(i)-7-'0')*Math.pow(16, string.length()-i-1);
}else if(string.charAt(i)=='a'||string.charAt(i)=='b'||string.charAt(i)=='c'||string.charAt(i)=='d'||string.charAt(i)=='e'||string.charAt(i)=='f') {
sum+=(string.charAt(i)-39-'0')*Math.pow(16, string.length()-i-1);
}else {
sum+=(string.charAt(i)-'0')*Math.pow(16, (string.length()-i-1));
}
}
System.out.println(sum);
}
*/
public static void jinzhi2() {
Scanner sc=new Scanner(System.in);
String string=sc.next();
System.out.println(Long.valueOf(string, 16));
// 上一句换成下面一行语句也行!
// System.out.println(Long.parseLong(string, 16));
}
}
总结:
收获1:更进一步地了解了Integer.parseInt(String string, int i)、Integer.valueOf(String string, int i)、
Long.parseLong(String string, int i)、Long.valueOf(String string, int i)方法的意义:(Long存储的数据更大)
即:将i进制的string转换成十进制
收获2:valueOf与parseInt方法比较:
1.parseInt返回的是基本类型int,而valueOf返回的是对象
2.valueOf的内部其实就是调用了parseInt方法。
知识:
System.out.println(Integer.parseInt("101010", 2));
System.out.println(Long.parseLong("101010", 2));
但是这个字符串可能超出Integer的范围了
System.out.println(Integer.parseInt("123456789ABCDEF", 16));
于是乎,就有了Long这个类
System.out.println(Long.parseLong("123456789ABCDEF", 16));