首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 基數轉換完整指南:2 到 36 進制互轉

     編輯:Java 相關知識

前言

在程式開發中,經常需要將數值在不同進制之間轉換。Java 標準庫提供了簡單易用的 API,支援從 2 進制到 36 進制的任意基數轉換。本文詳細介紹相關核心類別與實作範例。

核心 API

  • Character.MIN_RADIX:最小基數(值為 2)
  • Character.MAX_RADIX:最大基數(值為 36)
  • Integer.parseInt(String s, int radix):將指定基數的字串解析為整數
  • Integer.toString(int i, int radix):將整數轉換為指定基數的字串表示

完整範例代碼

public class RadixConversionDemo {
    public static void main(String[] args) {
        System.out.println("最大基數: " + Character.MAX_RADIX); // 36
        System.out.println("最小基數: " + Character.MIN_RADIX); // 2

        String input = "100";
        System.out.println("\n字串 \"" + input + "\" 在不同基數下的十進制值:");
        for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
            try {
                int value = Integer.parseInt(input, radix);
                System.out.printf("基數 %2d: %d%n", radix, value);
            } catch (NumberFormatException e) {
                System.out.printf("基數 %2d: 無效輸入%n", radix);
            }
        }

        // 反向轉換:十進制轉其他基數
        int number = 255;
        System.out.println("\n十進制 " + number + " 轉換為各基數:");
        for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
            System.out.printf("基數 %2d: %s%n", radix, Integer.toString(number, radix));
        }
    }
}

執行結果節錄

最大基數: 36
最小基數: 2

字串 "100" 在不同基數下的十進制值:
基數  2: 4
基數  8: 64
基數 10: 100
基數 16: 256
基數 36: 1296

十進制 255 轉換為各基數:
基數  2: 11111111
基數  8: 377
基數 10: 255
基數 16: ff
基數 36: 73

進階應用:自定義基數轉換工具類

public class RadixUtils {
    /** 驗證基數範圍 */
    public static void validateRadix(int radix) {
        if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) {
            throw new IllegalArgumentException("基數必須在 " + Character.MIN_RADIX + " 到 " + Character.MAX_RADIX + " 之間");
        }
    }

    /** 任意基數字串轉十進制長整數 */
    public static long parseLong(String s, int radix) {
        validateRadix(radix);
        return Long.parseLong(s, radix);
    }

    /** 十進制長整數轉任意基數字串 */
    public static String toString(long value, int radix) {
        validateRadix(radix);
        return Long.toString(value, radix);
    }

    /** 直接在兩種基數之間轉換 */
    public static String convert(String value, int fromRadix, int toRadix) {
        long decimal = parseLong(value, fromRadix);
        return toString(decimal, toRadix);
    }
}

注意事項

  1. 基數範圍固定為 2-36,超出範圍會拋出 NumberFormatException
  2. 基數大於 10 時,使用字母 a-z(或 A-Z)表示 10-35
  3. 輸入字串不區分大小寫
  4. 負數支援:-100 在任意基數下均可正確解析
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved