思路:
1.将字符串转换成一个一个的字符2.将字符转换成十六进制的数字
3.计算出结果
package test;
public class Test {
public static void main(String[] args) {
String str = "13abf";
int len = str.length();
int sum = 0;
for(int i=0;i<len;i++){
/*
* charAt 官方文档上是说返回指定索引处的char值,
* 实际上就是将字符串转换成一个一个的字符
*/
char c = str.charAt(len-1-i);
/*
* digit 官方文档上是说返回使用指定基数的字符c的数值,
* 实际上和Integer.parseInt(c,radix)是一个道理,
* 就是将你指定进制的这个字符c转换成一个整数
*/
int n = Character.digit(c,16);
/*
* 这就相当于1*16^4+3*16^3+...
* <<:高位去除,地位补0
* a<<b在数据不溢出的情况下相当于a*2^b
*/
sum += n * (1<<(4*i));
}
System.out.println(sum);
//利用Integer类的静态方法可以直接得到结果
//System.out.println(Integer.parseInt(str, 16));
//System.out.println(Integer.valueOf(str, 16));
}
}