问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
/****首先考虑到的是用Integer类的parseInt方法,但是长度为8的时候数据会溢出,所以放弃了***********/
import java.util.*;
import java.lang.StringBuilder;
public class Main
{
public static void main(String args[])
{
long sum=0;
Scanner sc=new Scanner(System.in);
String str_val_hex=sc.nextLine();
System.out.println(Integer.parseInt(str_val_hex, 16));
sc.close();
}
}
/****没有找到其他的现成方法,自己动手**************/
import java.util.*;
import java.lang.StringBuilder;
public class Main
{
public static void main(String args[])
{
long sum=0;
Scanner sc=new Scanner(System.in);
String str_val_hex=sc.next();
for(int i=str_val_hex.length()-1;i>=0;i--)
{
if(str_val_hex.charAt(i)<='9'&&str_val_hex.charAt(i)>='0')
sum+=(str_val_hex.charAt(i)-'0')*Math.pow(16, str_val_hex.length()-i-1);
else if(str_val_hex.charAt(i)>='A')
sum+=(str_val_hex.charAt(i)-'A'+10)*Math.pow(16, str_val_hex.length()-1-i);
}
System.out.println(sum);
sc.close();
}
}