时间限制:1秒
空间限制:32768K
热度指数:87114 本题知识点:
字符串
算法知识视频讲解
题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
示例1
输入
0xA
输出
10
import java.util.Scanner;
import java.util.*;
/*public class Main{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
String str = null;
while(sc.hasNext())
{
str = sc.nextLine().substring(2);
System.out.println(Integer.parseInt(str,16));
}
}
}*/
public class Main{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{StringBuffer sb = new StringBuffer();
int sum = 0;
sb.append(sc.next());
String str = sb.reverse().substring(0,sb.length()-2);
char ch[] = str.toCharArray();
for(int i =0;i<ch.length;i++)
{
if(ch[i]>='A'&&ch[i]<='F')
{
sum+=(Integer.valueOf(ch[i])-55)*Math.pow(16,i);
}
else
{
sum+=(Integer.valueOf(ch[i])-48)*Math.pow(16,i);
}
}
System.out.println(sum);
}
}
}
注释部分是第一种方法,该方法直接调用java的API;
第二种方法是按部就班转换,其中-55,和-48,请参照数字和大写字母的ASCII。
所有程序都在java 1.7下通过