当前位置 博文首页 > 邱天的henry的博客:蓝桥杯:基础练习 十六进制转八进制(java实

    邱天的henry的博客:蓝桥杯:基础练习 十六进制转八进制(java实

    作者:[db:作者] 时间:2021-07-19 13:23

    问题描述 给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式
      输出n行,每行为输入对应的八进制正整数。

    【注意】
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

    【提示】
      先将十六进制数转换成某进制数,再由某进制数转换成八进制。

    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main {
    	/* 给定n个十六进制正整数,输出它们对应的八进制数。 */
    	public static void main(String[] args) {
    	   Scanner sc=new Scanner(System.in);
           //获取n
    	   int n=sc.nextInt();
    	   //定义数组来存放转换后的数
    	   String []arr=new String[n];
    	   //循环然后进行16进制转换为8进制
    	   for(int i=0;i<n;i++) {
    		   //获取16进制数(注意next和nextInt区别)
    		   String sixteen=sc.next();
    		   //由于数字可能会越界,所有使用BigInteger的api
    		   //new BigInteger(number, from).toString(to);
    		   //number:要转换的数     from:原数的进制      to:要转换成的进制
    		   String eight=new BigInteger(sixteen, 16).toString(8);
    		   //将结果存入arr中
    		   arr[i]=eight;
    	   }
    	   //遍历数组并打印
    	   for(int i=0;i<n;i++) {
    		   System.out.println(arr[i]);
    	   }
    	}
    }
    

    ps:new BigInteger(number, from).toString(to);
    number:要转换的数
    from:原数的进制
    to:要转换成的进制

    cs