Java之任意進制轉換


問題描述:

現有的Java庫函數有提供進制轉換的方法

被封裝在Integer對象中.

10進制轉化其他進制     對應的方法,參數:n(原10進制數據),r(進制),     返回值
10進制轉2進制     Integer.toBinaryString(n);     一個二進制字符串.
10進制轉8進制     Integer.toOctalString(n);     一個八進制字符串
10進制轉16進制     Integer.toHexString(n);     一個16進制字符串
10進制轉 r 進制     Integer.toString(100, 16);     一個r進制字符串
具體實現:

public class Main {
    public static void main(String[] args) {
        int n = 16;
        Integer.toHexString(n);//使用Integer對象的進制轉換方法

        System.out.println(n + "的八進制是:" + Integer.toOctalString(n));
        System.out.println(n + "的二進制是:" + Integer.toBinaryString(n));
        System.out.println(n + "的十六進制是:" + Integer.toHexString(n));
        System.out.println(n + "的三進制是:" + Integer.toString(n, 3));
    }

分析:可以寫一個關於Java 任意進制轉換的方法

利用StringBuilde 對象可隨意更改其值,利用append()方法將值附加到緩沖區,

進制轉換本質就是除留取余數;

代碼測試

import java.util.Scanner;
public class jinzhizhuanhuan {
          static char a[] =new char [36];
    
      pubilc  static void{    
            for(int i = 0;i<10;i++) {
                   a[i]=(char)('0'+i);
            }
            for(int i=10;i<a.length;i++) {
                a[i]=(char)('A'+(i-10));
            }
            }
      static String transRadix(String num,int fromRadix, int toRadix) {
          int number=Integer.valueOf(num, fromRadix);
          StringBuilder s=new StringBuilder();
          while(number!=0) {
              if(toRadix==0)
                 return null;
            s.append(a[number%toRadix]);
              number=number/toRadix;
          }
          return s.reverse().toString();
          
      }
        
public static void main(String[] args) {
     
    Scanner sc=new Scanner(System.in);
    String s=sc.next();
     System.out.println(transRadix(s,10,16));
    
    
    }

}

效果:23

          17h


免責聲明!

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



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