写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
分析:
如果字符串里有十六进制的数字,要解析成整数数据类型,可以使用Integer.parseInt()或者Long.parseLong();
String s = "7890abcd";
int i = Integer.parseInt(s, 16);
long l = Long.parseLong(s, 16);如果是十六进制字符串转为十进制字符串,也可以用上面的办法,再使用toString转换为字符串;
String s = "7890abcd";
String s1 = Integer.toString(Integer.parseInt(s, 16));
String s2 = Long.toString(Long.parseLong(s, 16));
- 自己实现一个十六进制转十进制函数;
比如 0xab 转换如下:
a = 10
b = 11
0xab = 10*16 +11*1 = 171
//方法一:自己实现转换函数
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String n = in.nextLine();
if(n=="0"){
break;
}else{
int len = n.length();
char[] cs = n.toCharArray();
int sum = 0;
for(int i =2;i<len;i++){
if(cs[i]>='0'&&cs[i]<='9'){
sum+= (Integer.valueOf(cs[i]-48)*Math.pow(16, len-i-1));
}else if(cs[i]>='A'&&cs[i]<='Z'){
sum+=(Integer.valueOf(cs[i]-55))*Math.pow(16, len-i-1);
}
}
System.out.println(sum);
}
}
}
}
//方法二:使用Integer.parseInt(),String.substring()
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String hexnumber = in.nextLine().substring(2);
System.out.println(Integer.parseInt(hexnumber,16));
}
}
}