藍橋杯十六進制轉十進制JAVA代碼

問題描述

    從鍵盤輸入一個不超過8位的正的十六進制數字符串,將它轉換爲正的十進制數後輸出。
    注:十六進制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。
樣例輸入

    FFFF
樣例輸出

    65535
分析
    根據數電所學的進制轉換將十六進制轉化爲十進制直接採用展開法
    以16爲基數,當前的位數減1爲冪,再乘以當前位所在的值。從最高位開始,直至最後一位,所有計算後的值的和,即爲轉換後的十進制數。

    例:(2AF)h=2 x 16^2 +10 x 16^1 +15 x 16^0 =687
代碼

public class Main {
 public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        char[] c = s.toCharArray();
        int n=c.length;
        int m=0;
        long sum=0;
        for (int i=0;i<n;i++){
                if (c[i] == 'A')
                    m = 10;
                 else if (c[i] == 'B')
                    m = 11;
                 else if (c[i] == 'C')
                    m = 12;
                 else if (c[i] == 'D')
                    m = 13;
                 else if (c[i] == 'E')
                    m = 14;
                 else if (c[i] == 'F')
                    m = 15;
                 else
                    m = Integer.parseInt(c[i]+"");//若不是字母,則將字符轉成整數形式給m
              sum+= m*(Math.pow(16,n-i-1));//取16的(n-i-1)次冪乘以m
        }
        System.out.println(sum);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章