写一个任意进制转换的java方法
时间: 2023-08-31 08:06:06 浏览: 40
好的,下面是一个将任意进制数转换为十进制数的Java方法,可以接受两个参数:要转换的数和原数的进制。例如,要将二进制数 "1010" 转换为十进制数,调用该方法时传入参数 ("1010", 2)。
```java
public static int toDecimal(String num, int base) {
int decimal = 0;
int power = 0;
for (int i = num.length() - 1; i >= 0; i--) {
int digit = getDigit(num.charAt(i));
decimal += digit * Math.pow(base, power);
power++;
}
return decimal;
}
private static int getDigit(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else {
return c - 'A' + 10;
}
}
```
该方法先定义了两个变量:`decimal` 和 `power`,分别表示转换后的十进制数和当前位数的权值。然后从最高位开始遍历原数的每一位,将每一位的权值乘以对应位上的数字,并累加到十进制数上。最后返回转换后的十进制数。
其中,`getDigit` 方法用于将任意进制下的字符转换为对应的数字,如果是数字字符,则直接减去字符 '0' 得到数字,如果是字母字符,则减去字符 'A' 得到数字并加上 10。
如果需要将十进制数转换为任意进制数,可以使用类似的方法,将上面的 `Math.pow(base, power)` 替换成对应进制下的权值即可。