day9 HJ5 进制转换

137 阅读1分钟

题目来源: HJ5 进制转换

题目描述:

  • 描述:写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
    数据范围:保证结果在 1n2311 1 \le n \le 2^{31}-1
  • 输入描述:输入一个十六进制的数值字符串。
  • 输出描述:输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1:
输入:0xAA
输出:170

思路

由于十六进制的数的表示,在转换时,需要注意将0x去掉

具体实现:

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        if(str.charAt(0) == '0'){ //判断是否有0x,有的话,去掉
            str = str.substring(2,str.length());
        }
        System.out.println(Integer.valueOf(str,16)); //将不包含0x的部分转化为十进制
    }

思路杂记

1.System,out.println()里面为一个对象的引用时,会自动调用toString方法将对象打印出来。 即:System,out.println(obj)System,out.println(obj.toString)其实是一样的

2.常用知识

十进制转成十六进制: Integer.toHexString(int i) 
十进制转成八进制:Integer.toOctalString(int i) 
十进制转成二进制:Integer.toBinaryString(int i) 
十六进制转成十进制:Integer.valueOf("FFFF",16).toString() 
八进制转成十进制 :Integer.valueOf("876",8).toString() 
二进制转十进制:Integer.valueOf("0101",2).toString() 
 
 
有什么方法可以直接将2,8,16进制直接转换为10进制的吗? 
java.lang.Integer类 
parseInt(String s, int radix) 
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。