用java实现任意进制转换
时间: 2023-08-31 13:06:45 浏览: 107
Java实现任意进制的转换
要在Java中实现任意进制的转换,可以使用以下示例代码:
```java
public class BaseConversion {
public static String decimalToBase(int number, int base) {
if (base < 2 || base > 36) {
throw new IllegalArgumentException("基数必须在2到36之间");
}
StringBuilder result = new StringBuilder();
while (number > 0) {
int remainder = number % base;
if (remainder < 10) {
result.insert(0, remainder);
} else {
char digit = (char) ('A' + remainder - 10);
result.insert(0, digit);
}
number /= base;
}
return result.toString();
}
public static int baseToDecimal(String number, int base) {
if (base < 2 || base > 36) {
throw new IllegalArgumentException("基数必须在2到36之间");
}
int result = 0;
for (int i = number.length() - 1; i >= 0; i--) {
char digit = number.charAt(i);
int value = Character.isDigit(digit) ? digit - '0' : digit - 'A' + 10;
result += value * Math.pow(base, number.length() - 1 - i);
}
return result;
}
public static void main(String[] args) {
int number = 255;
int base = 16;
// 十进制转换为十六进制
String result1 = decimalToBase(number, base);
System.out.println(number + "转换为" + base + "进制:" + result1);
String binaryNumber = "101010";
int binaryBase = 2;
// 二进制转换为十进制
int result2 = baseToDecimal(binaryNumber, binaryBase);
System.out.println(binaryNumber + "转换为十进制:" + result2);
}
}
```
在这个示例中,我们实现了两个静态方法:`decimalToBase`用于将十进制数转换为任意进制,`baseToDecimal`用于将任意进制数转换为十进制。
`decimalToBase`方法接收两个参数:`number`表示要转换的十进制数,`base`表示目标进制。它使用模运算和除法运算来逐步计算出每一位的值,并将结果存储在StringBuilder中,最后返回转换后的字符串。
`baseToDecimal`方法接收两个参数:`number`表示要转换的任意进制数(以字符串形式表示),`base`表示原始进制。它遍历每一位字符,根据字符的值计算出对应的数值,并根据权重求和,最后返回转换后的十进制数。
在main方法中,我们演示了将十进制数255转换为十六进制以及将二进制数101010转换为十进制的示例。运行这段代码,你会看到以下输出结果:
```
255转换为16进制:FF
101010转换为十进制:42
```
请注意,这只是一个简单的实现示例,对于更大范围的数值或更高的进制可能需要更复杂的算法。
阅读全文