1. 程式人生 > 程式設計 >Java 3種方法實現進位制轉換

Java 3種方法實現進位制轉換

由其他進位制轉換為十進位制比較簡單,下面著重談一談十進位制如何化為其他進位制。

1.使用Java帶有的方法Integer,最簡單粗暴了,程式碼如下

//使用java提供的方法
  //但僅侷限於比較常用的二進位制、八進位制、十六進位制
  public static String trans1(int num,int radix)
  {
    if(radix == 2)
      return Integer.toBinaryString(num);
    else if(radix == 8)
      return Integer.toOctalString(num);
    else if(radix == 16)
      return Integer.toHexString(num);

    return null;
  }

2.使用陣列進行交換,貼碼:

//使用陣列的形式進行轉換
  public static void trans2(int num,int radix)
  {
    System.out.println(num+"轉成"+radix+"進位制數為:");

    //建立陣列,32位
    char[] arr = new char[32];

    //建立參考字元陣列
    char[] ch = {
      '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
    };

    //指標,從陣列最後開始
    int pos = 32;

    //開始迴圈計算num和radix的商和餘數
    while(num > 0)
    {
      arr[--pos] = ch[num % radix];
      num /= radix;

      /*
       * 這裡是針對二進位制、八進位制和十六進位制進行的移位運算
      arr[--pos] = ch[num&(radix-1)];
      if(radix == 2)
        num >>= 1;
      else if(radix == 8)
        num >>= 3;
      else if(radix == 16)
        num >>= 4;
      */
    }

    //輸出有效的進位制數
    for(int i = pos; i < 32; i++)
      System.out.print(arr[i]);

    System.out.println();
  }

3.使用StringBuilder型別,貼碼:

//使用StringBuilder進行轉換
  public static String trans3(int num,int radix)
  {
    //使用StringBuilder的reverse方法
    StringBuilder sb = new StringBuilder();

    while(num > 0)
    {
      //把除以基數的餘數存到緩衝區中
      sb.append(num % radix);
      num /= radix;
    }

    return sb.reverse().toString();
  }

以上就是Java 3種方法實現進位制轉換的詳細內容,更多關於Java 進位制轉換的資料請關注我們其它相關文章!