自制进制转换终极版

/**
 *    自制进制转换终极版
 *    过程不重复了.
 */
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();
    }
}

 

posted @ 2016-04-30 21:52  安仔80  阅读(176)  评论(0编辑  收藏  举报