总结了下各进制间的相互转换
import java.util.Scanner;
/**
* 进制转换
*/
public class RadixConvert {
static Scanner scanner = new Scanner(System.in);
static String s = "";
// 十进制转换成二进制
public static String Ten2Bin(int num) {
String result = "";
for (int i = num; i > 0; i /= 2) {
result = i % 2 + result;
}
return result;
}
// 十进制转换成八进制
public static String Ten2Octal(int num) {
String result = "";
for (int i = num; i > 0; i /= 8) {
result = i % 8 + result;
}
return result;
}
// 二进制转换成十进制
public static int Bin2Ten(int num) {
int k = 0, result = 0;
for (int i = num; i > 0; i /= 10) {
result += (i % 10) * Math.pow(2, k);
k++;
}
return result;
}
// 八进制转换成十进制
public static int Octal2Ten(int num) {
int k = 0, temp = 0;
for (int i = num; i > 0; i /= 10) {
temp += (i % 10) * Math.pow(8, k);
k++;
}
return temp;
}
// 十进制转换成其他进制
public static void TenConvert(int num, int to) {
String s = "";
switch (to) {
case 2:
s = "" + Ten2Bin(num);
break;
case 8:
s = "" + Ten2Octal(num);
break;
case 16:
s = Integer.toHexString(num).toUpperCase();
break;
default:
System.out.println("wrong input!");
}
System.out.println(s);
}
// 二进制转换成其他进制
public static void BinConvert(int num, int to) {
String s = "";
switch (to) {
case 10:
s = "" + Bin2Ten(num);
break;
case 8:
s = "" + Ten2Octal(Bin2Ten(num));
break;
case 16:
s = Integer.toHexString(Bin2Ten(num)).toUpperCase();
break;
default:
System.out.println("wrong input!");
}
System.out.println(s);
}
// 八进制转换成其他进制
public static void OctalConvert(int num, int to) {
String s = "";
switch (to) {
case 2:
s = "" + Ten2Bin(Octal2Ten(num));
break;
case 10:
s = "" + Octal2Ten(num);
break;
case 16:
s = Integer.toHexString(Octal2Ten(num)).toUpperCase();
break;
default:
System.out.println("wrong input!");
}
System.out.println(s);
}
// 十六进制转换成其他进制
public static void HexConvert(String num, int to) {
String s = "";
switch (to) {
case 2:
int temp2 = Integer.parseInt(num, 16);
s = Ten2Bin(temp2);
break;
case 8:
int temp3 = Integer.parseInt(num, 16);
s = Ten2Octal(temp3);
break;
case 10:
int temp = Integer.parseInt(num, 16);
s = "" + temp;
break;
default:
System.out.println("wrong input!");
}
System.out.println(s);
}
public static void convert(int num, int from, int to) {
switch (from) {
case 10:
TenConvert(num, to);
break;
case 2:
BinConvert(num, to);
break;
case 8:
OctalConvert(num, to);
break;
default:
System.out.println("wrong input!");
}
}
public static void convert(String num, int from, int to) {
switch (from) {
case 16:
HexConvert(num, to);
break;
default:
System.out.println("wrong input!");
}
}
public static void main(String[] args) {
//System.out.println(RadixConvert.Ten2Bin(9));
System.out.println("要转的是16进制数吗?\n输入1.代表是 \n输入2.代表否\n");
int input = scanner.nextInt();
switch(input){
case 1:
System.out.println("请输入一个16进制数:");
String num = scanner.next();
System.out.println("转成什么进制的数?");
int to = scanner.nextInt();
convert(num,16,to);
break;
case 2:
System.out.println("请输入一个数:");
int numb2 = scanner.nextInt();
System.out.println("从什么进制数转起?");
int from = scanner.nextInt();
System.out.println("转成什么进制的数?");
int to2 = scanner.nextInt();
convert(numb2, from, to2);
break;
default:
System.out.println("wrong input!");
}
}
}