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


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

  1. 使用Java帶有的方法Integer,最簡單粗暴了,代碼如下:
     1 //使用java提供的方法
     2     //但僅局限於比較常用的二進制、八進制、十六進制
     3     public static String trans1(int num, int radix)
     4     {
     5         if(radix == 2)
     6             return Integer.toBinaryString(num);
     7         else if(radix == 8)
     8             return Integer.toOctalString(num);
     9         else if(radix == 16)
    10             return Integer.toHexString(num);
    11  
    12         return null;
    13     }

    2.使用數組進行交換,貼碼:

     1 //使用數組的形式進行轉換
     2     public static void trans2(int num, int radix)
     3     {
     4         System.out.println(num+"轉成"+radix+"進制數為:");
     5  
     6         //創建數組,32位
     7         char[] arr = new char[32];
     8     
     9         //創建參考字符數組
    10         char[] ch = {
    11             '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
    12         };
    13  
    14         //指針,從數組最后開始
    15         int pos = 32;
    16  
    17         //開始循環計算num和radix的商和余數
    18         while(num > 0)
    19         {
    20             arr[--pos] = ch[num % radix];
    21             num /= radix;
    22  
    23             /*
    24              * 這里是針對二進制、八進制和十六進制進行的移位運算
    25             arr[--pos] = ch[num&(radix-1)];
    26             if(radix == 2)
    27                 num >>= 1;
    28             else if(radix == 8)
    29                 num >>= 3;
    30             else if(radix == 16)
    31                 num >>= 4;
    32             */
    33         }
    34  
    35         //輸出有效的進制數
    36         for(int i = pos; i < 32; i++)
    37             System.out.print(arr[i]);
    38  
    39         System.out.println();
    40     }

    3.使用StringBuilder類型,貼碼:

     1 //使用StringBuilder進行轉換
 2     public static String trans3(int num, int radix)
 3     {
 4         //使用StringBuilder的reverse方法
 5         StringBuilder sb = new StringBuilder();
 6  
 7         while(num > 0)
 8         {
 9             //把除以基數的余數存到緩沖區中
10             sb.append(num % radix);
11             num /= radix;
12         }
13  
14         return sb.reverse().toString();
15     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM