2-61进制的任意转换
新鲜出炉java (2-61)进制的随意转换_712f的博客-CSDN博客
原理
先把任意进制转换成为10进制
下面这张图就是转换的原理,我用2进制换10进制为例:
然后转从10进制换成n进制
下面这张图就是转换的原理,我用2进制换10进制为例:
代码:
import java.util.Scanner;
public class Run {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Run run = new Run();
System.out.println("请输入一开始的进制.");
int a = scanner.nextInt();
System.out.println("请输入想要转换成的进制.");
int b = scanner.nextInt();
System.out.println("请输入数字");
long sum = scanner.nextInt();
long s = run.nzd(sum,a);
run.dzn(s,b);
}
public int nzd(long n,int z) {
int t = 0; // 用来记录位数
int bin = 0; // 用来记录最后的进制数
int r = 0; // 用来存储余数
while (n != 0) {
bin += (n % 10)* Math.pow(z,t);
n=n/10;
t++;
}
return bin;
}
public void dzn(long n, int z) {
int t = 0; // 用来记录位数
String bin = ""; // 用来记录最后的二进制数
int r = 0; // 用来存储余数
while (n != 0) {
r =(int) (n % z);
n = n / z;
// t代表位数,Math.pow下一位
bin = bin + r;
t++;
}
System.out.println(bin);
}
}