这个题,很有意思
最开始想到直接用integer的类,试了几次,发现都过不去,后来仔细一看,发现是超范围了
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String string = sc.next();
System.out.println(Integer.toOctalString(Integer.parseInt(string, 16)));
}
}
}
显然,这种在int里会超范围,那么怎么办呢
采用BigInteger即可解决
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String str = sc.next();
BigInteger a = new BigInteger(str,16);
System.out.println(a.toString(8));
}
}
}
先把16进制转为10进制的数,放到BigInteger里,接下来直接输出即可,真是好简单。
如果这篇文章有帮到您,希望可以给个赞支持。