题目
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
解题过程
拿到这个题首先想到的是用Integer中的valueOf(),toOctalString()和parseInt(),将输入的字符先转化为十六进制,再将十六进制转换为八进制的字符串,最后将字符串转化为Int类型的数存入数组进行输出,但是发现再编译软件上运行可以,在练习系统上报错, 下载输出文件后发现,十六进制数很大,有的连long都无法表示,因为以前写过一个复数的题,用到了BigInteger就进行尝试,查找API显示真的可以.其中BigInteger(a[i],16),16是指a[i]是一个十六进制的String类型的数,然后让它转化成十进制。toString(8)),将十进制数转化成八进制数。