描述
将十六进制数转换成十进制数
输入
第一行有一个整数T,表示共有T组数据
接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前没有多余的0
输出
输出共T行,每一行是一组数据的十进制表示,数字前不得有多余的0。
十进制数小于2^31
样例输入
4 A F FFFE 10001
样例输出
10 15 65534 65537
这个题目涉及到了进制之间的转换。Java中有专门的函数可以进行进制转换,代码示例如下:
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("十进制转换到其它进制:"); int x = 123 ; String str1 = Integer.toHexString(x) ; ///10进制转换成16进制的字符串 System.out.println(str1); String str2 = Integer.toOctalString(x) ; ///10进制转换成8进制的字符串 System.out.println(str2); String str3 = Integer.toBinaryString(x) ; ///10进制转换成2进制的字符串 System.out.println(str3); String str4 = Integer.toString(123456,7) ; ///10进制转换成7进制的字符串 ///String str4 = Integer.toString(i,x) ; ///10进制的数字i转换成x进制的字符串 System.out.println("其它制转换到十进制:"); int y1= Integer.valueOf("FFFF",16); ///16进制转换成10进制 System.out.println(y1); int y2=Integer.valueOf("776",8); ///8进制转换成10进制 System.out.println(y2); int y3=Integer.valueOf("0101",2); //2进制转换成10进制 System.out.println(y3); int y4=Integer.valueOf("101",7); //7进制转换成10进制 System.out.println(y4); ///Integer.valueOf("str",x); ///可以为任意进制的字符串str转换成x进制的10进制数 System.out.println("其它的可能用到的函数:"); //static int parseInt(String s, int radix) //使用第二个参数指定的基数,将字符串参数解析为有符号的整数。 int n = Integer.parseInt("776", 8) ; ///8进制转换成10进制 System.out.println(n); ///Integer.valueOf()返回一个“integer对象” ///和Integer.parseInt()返回一个“int值”的区别在于,返回值不同 ///基本常识,其他的非10进制的数的保存,基本都是以字符串的形式 ///例子:7进制到8进制的转换 String q = "6523" ; ///7进制的字符串 String b = Integer.toString(Integer.valueOf(q,7),8) ; ///这样7进制就变成8进制了 } }
因此,此题有较为简便的解法,代码如下:
import java.util.Scanner; import java.math.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n; String str=new String(); n=sc.nextInt(); sc.nextLine(); for(int i=0;i<n;i++){ str=sc.next(); System.out.println(Integer.valueOf(str,16).toString()); } } }