/**
* 十转二
* @param a
* @return String 型的二进制
*/
public static String ten_two(int a){
int length = 1;
int b = a;
while(true){
int x = b % 2;
b = b / 2;
if(b < 2){
length++;
break;
}
length ++;
}
int[] arr = new int[length]; // 获取数组的动态长度
int item = -1;
while(true){
int x = a % 2;
if(a < 2){
x = a;
item++;
arr[item] = x;
break;
}else {
item ++;
arr[item] = x;
}
a = a / 2;
}
String str = "";
int time = item;
for(int i = 0; i <= item; i++){
String st = String.valueOf(arr[time]);
str = str + st;
time --;
}
return str;
}
/**
* 十转十六
* @param a
* @return 返回String 的十六进制
*/
public static String ten_sixteen(int a){
int length = 1;
int b = a;
while(true){
int x = b % 16;
b = b / 16;
if(b < 16){
length++;
break;
}
length ++;
}
String[] arr = new String[length];
int item = -1;
while(true){
int x = a % 16;
if(a < 16){
x = a;
item++;
arr[item] = String.valueOf(x);
break;
}else {
item ++;
arr[item] = String.valueOf(x);
}
a = a / 16;
}
String str = "";
int time = item;
for(int i = 0; i <= item; i++){
if(arr[time].equals("10")){
arr[time] = "a";
}else if(arr[time].equals("11")){
arr[time] = "b";
}else if(arr[time].equals("12")){
arr[time] = "c";
}else if(arr[time].equals("13")){
arr[time] = "d";
}else if(arr[time].equals("14")){
arr[time] = "e";
}else if(arr[time].equals("15")){
arr[time] = "f";
}
str = str + arr[time];
time --;
}
return str;
}
System.out.println(ten_two(12345));
System.out.println(ten_sixteen(987654));