超过long范围的数转换进制又要怎么编写
时间: 2024-02-27 21:56:59 浏览: 19
如果要转换的数超过了 long 类型的范围,可以使用 BigInteger 类型来进行进制转换。下面是一个将 BigInteger 类型的数转换为任意进制数的 Java 方法,可以接受两个参数:要转换的数和目标进制数。例如,要将一个超过 long 类型范围的数转换为二进制数,调用该方法时传入参数 (bigInteger, 2)。
```java
public static String fromBigInteger(BigInteger bigInteger, int base) {
StringBuilder sb = new StringBuilder();
while (bigInteger.compareTo(BigInteger.ZERO) > 0) {
BigInteger[] result = bigInteger.divideAndRemainder(BigInteger.valueOf(base));
int remainder = result[1].intValue();
char digit = getChar(remainder);
sb.insert(0, digit);
bigInteger = result[0];
}
return sb.toString();
}
private static char getChar(int digit) {
if (digit < 10) {
return (char) ('0' + digit);
} else {
return (char) ('A' + digit - 10);
}
}
```
该方法与之前的方法类似,不同之处在于使用了 BigInteger 类型来进行高精度计算。在循环中,先使用 BigInteger 类型的除法方法 `divideAndRemainder` 对当前数进行除法运算,得到商和余数,然后将余数转换为对应进制下的字符,插入到 StringBuilder 的最前面。最后返回 StringBuilder 转换为的字符串即可。
同样地,如果要将 BigInteger 类型的数转换为八进制或十六进制,只需要将调用该方法时的第二个参数改为 8 或 16 即可。