Java的万能进制转换

万能进制转换;

 

public classScaleUtil {

 

    public static final int SCALE_DECIMAL= 10;

    public static final int SCALE_HEX = 16;

    public static final int SCALE_OCTAL = 8;

    public static final int SCALE_BINARY = 2;

 

    public static final String SCALE_DECIMAL_STR= "十进制"; // 十进制

    public static final String SCALE_HEX_STR= "十六进制"; // 十六进制

    public static final String SCALE_OCTAL_STR= "八进制"; // 八进制

    public static final String SCALE_BINARY_STR= "二进制"; // 二进制

 

    /**

     * 十进制转换十六进制

     *

     * @param decimValue

     * @return

     */

    public static String decimalToHex(int decimValue) {

        return Integer.toHexString(decimValue);

    }

 

    /**

     * 十进制转换二进制

     *

     * @param decimValue

     * @return

     */

    public static String decimalToBinary(int decimValue) {

        return Integer.toBinaryString(decimValue);

    }

 

    /**

     * 十进制转换八进制

     *

     * @param decimValue

     * @return

     */

    public static String decimalToOctal(int decimValue) {

        return Integer.toOctalString(decimValue);

    }

 

    /**

     * 任意进制转换十进制

     *

     * @param value

     * @param radix

     * @return

     */

    public static int toDecimal(String value,intradix) {

        if (value == null || "".equals(value)) {

            return 0;

        }

        try {

            Integer.parseInt(value,radix);

        }catch(Exception e) {

            e.printStackTrace();

        }

        return 0;

    }

 

    /**

     * 十进制转换为任意进制

     *

     * @param decimValue

     * @param radix

     * @return

     */

    public static String decimalTo(int decimValue, int radix) {

        if (decimValue <= 0) {

            return "";

        }

 

        StringBuffertarget = newStringBuffer();

        int digit = dealer(decimValue,radix);

        for (int i = digit; i > 0;i--) {

            int j = getDigPosition(decimValue,radix, i - 1);

            target.append(j);

            decimValue-= Math.pow(radix, i - 1) * j;

        }

 

        return target.toString();

 

    }

 

    /**

     * 获得指定数位上的值

     *

     * @param decimValue

     * @param radix

     * @param pow 表示第pow+1位上的值

     * @return

     */

    public static int getDigPosition(int decimValue, int radix, int pow) {

        int i = 0;

        while (true) {

            if (Math.pow(radix,pow) * i > decimValue) {

                break;

            }

            i++;

        }

        return i - 1;

    }

 

    /**

     * 获得转换后的位数,到底有多少个数位

     *

     * @param value

     * @param radix

     * @return

     */

    public static int dealer(int value, int radix) {

        int i = 1;

        while (true) {

            double power = Math.pow(radix,i);

            if (power > value) {

                return i;

            }

            i++;

        }

    }

 

    /**

     * oldRadix进制的数转换为 targetRadix进制的数

     *

     * @param rawValue

     * @param oldRadix原来的基数

     * @param targetRadix转换后的基数

     * @return

     */

    public static StringscaleConversion(String rawValue, int oldRadix,

            int targetRadix) {

        if (oldRadix ==targetRadix || oldRadix <= 0 || targetRadix <= 0) {

            return rawValue;

        }

 

        return decimalTo(toDecimal(rawValue,oldRadix), targetRadix);

 

    }

   

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值