java进制转换小组件(其他进制转为十进制)

好好学习,天天向下!

进制

  • 二进制(数字前加0b,代表此数为二进制数),满二进一,由0和1两个基本数字组成
  • 八进制(数字前加0,代表此数为八进制数),满八进一,由0,1,2,3,4,5,6,7八个基本数字组成
  • 十进制(数字前什么都不加,则为十进制数),满十进一(日常生活中所使用的),由0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成
  • 十六进制(数字前加0x,代表此数为十六进制数),满十六进一,由0,1,2,3, 4, 5, 6, 7, 8, 9和字母A到F(或a到f)组成
    同一个数进制越大,所代表的值就越大

规则:

数字:123456
二进制===》十进制:1*2^5 + 2*2^4 + 3*2^3 + 4*2^2 + 5*2^1 + 6*2^0=……
规律: 将这个数字(123456)从右往左从零开始进行编号,这个数每一位数值乘以数字(123456)的进制(二进制,2)的编号次方之和,即为转换后的十进制结果。其他进制同理
代码实现:

public class sys {
    public static void main(String[] args) {
        sysHeavyLoad SYS = new sysHeavyLoad();
        System.out.println(SYS.$SYS(100, "0B"));
    }
}
public class sysHeavyLoad {
    public static int $SYS(String number, String type) {
        int sum = 0;
        char[] array = number.toCharArray();
        sum = summation(array, type);
        return sum;
    }

    public static int $SYS(int number, String type) {
        int sum = 0;
        char[] array = String.valueOf(number).toCharArray();
        sum = summation(array, type);
        return sum;
    }

    /**
     * 返回次方值
     */
    public static int power(int a, int b) {
        int power = 1;
        for (int c = 0; c < b; c++)
            power *= a;
        return power;
    }

    /**
     *判断类型并将转换结果返回
     */
    public static int summation(char[] array, String type) {
        int m = 0;
        int sum = 0;
        //二进制
        if ("0b".equals(type) || "0B".equals(type)) {
            m = 2;
        }
        //八进制
        if ("0".equals(type)) {
            m = 8;
        }
        //十六进制
        if ("0x".equals(type) || "0X".equals(type)) {
            m = 16;
        }
        for (int i = 0; i < array.length; i++) {
            sum = sum + (array[i] - '0') * power(m, array.length - i - 1);
        }
        return sum;
    }
}
发布了53 篇原创文章 · 获赞 14 · 访问量 6670

猜你喜欢

转载自blog.csdn.net/weixin_43160780/article/details/104640207