/**
* 自制进制转换终极版
* 过程不重复了.
*/
public class TransFinal {
public static void main(String[] args) {
int num = 26;
String hex = toHex(num);
String oct = toOct(num);
String bin = toBin(num);
System.out.println("十六进制: "+ hex);
System.out.println("八进制: "+ oct);
System.out.println("二进制: "+ bin);
}
/**
* 给定一个整数转换二进制的方法
* @param num 给定的整数
* @return str 返回该数字的二进制写法
*/
public static String toBin(int num) {
String str = toTrans(num,1,1);
return str;
}
/**
* 给定一个整数转换八进制的方法
* @param num 给定的整数
* @return str 返回该数字的八进制写法
*/
public static String toOct(int num) {
String str = toTrans(num,7,2);
return "0"+str;
}
/**
* 给定一个整数转换十六进制的方法
* @param num 给定的整数
* @return str 返回该数字的十六进制写法
*/
public static String toHex(int num) {
String str = toTrans(num,15,4);
return "0x"+str;
}
/**
* 转换给定的数字
* @param num 给定的数字
* @param base 给定的基数
* @param offset 给定的偏移量
* @return str 返回指定的进制表现形式
*/
public static String toTrans(int num, int base, int offset) {
StringBuilder returnStr = new StringBuilder();
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while (num != 0){
int temp = num & base;
returnStr.insert(0, chs[temp]);
num = num >>> offset;
}
return returnStr.toString();
}
}