Java進制轉換

1.實現的功能

實現從進制A轉換到進制B

2.工具類

/**
 * Function:進制轉換
 * Created by xuzhuyun on 2017/12/8.
 */
public class Operation {

    /**
     * 總進制轉換
     *
     * @param typeFrom     從進制
     * @param typeTo       到進制
     * @param transferText 需要轉換的數
     * @return
     */
    public String transfer(String typeFrom, String typeTo, String transferText) {
        return from10(typeTo, to10(typeFrom, transferText));
    }
    /**
     * 轉10進制
     *
     * @param from1 從進制
     * @param txt   要轉換的數
     * @return 轉換後結果
     */
    private int to10(String from1, String txt) {
        int from = Integer.parseInt(from1);
        int sum = 0;
        int i = txt.length() - 1;
        int leng = i;
        while (i >= 0) {
            // 判斷輸入文本的當前取出的char值是數字,並且值不爲0
            if (Character.isDigit(txt.charAt(i))) {
                if (txt.charAt(i) != '0') {
                    int temp = Integer.parseInt(String.valueOf(txt.charAt(i)));
                    for (int j = 0; j < leng - i; j++) {
                        temp *= from;
                    }
                    sum += temp;
                }
            } else {
                int temp = 0;
                switch (txt.charAt(i)) {
                    case 'A':
                        temp = 10;
                        break;
                    case 'B':
                        temp = 11;
                        break;
                    case 'C':
                        temp = 12;
                        break;
                    case 'D':
                        temp = 13;
                        break;
                    case 'E':
                        temp = 14;
                        break;
                    case 'F':
                        temp = 15;
                        break;
                    default:
                        return 0;
                }
                for (int j = 0; j < leng - i; j++) {
                    temp *= from;
                }
                sum += temp;
            }
            i--;
        }
        return sum;
    }

    /**
     * 從10進制轉爲其他進制
     *
     * @param to1 要轉換後的進制
     * @param num 要轉的10進制數
     * @return 轉換後的值(String)
     */
    private String from10(String to1, int num) {
        int to = Integer.parseInt(to1);
        String jg = "";
        while (num != 0) {
            switch (num % to) {
                case 10:
                    jg = "A" + jg;
                    break;
                case 11:
                    jg = "B" + jg;
                    break;
                case 12:
                    jg = "C" + jg;
                    break;
                case 13:
                    jg = "D" + jg;
                    break;
                case 14:
                    jg = "E" + jg;
                    break;
                case 15:
                    jg = "F" + jg;
                    break;
                default:
                    jg = String.valueOf(num % to) + jg;
                    break;
            }
            num = num / to;
        }
        return jg;
    }
}


發佈了331 篇原創文章 · 獲贊 168 · 訪問量 95萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章