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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章