Java實現進制轉換


進制轉換基礎知識可以參考我的一篇博客:<a href='https://blog.csdn.net/Honeycomb_1/article/details/104828169'></a>

以16進制轉10進制為例:

方法一:十六進制先轉化為二進制,然后再轉化為10進制

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String [] args){
      Scanner sc = new Scanner(System.in);
      String str = sc.next();///輸入16進制
      String str1="";
      StringBuilder stringBuilder = new StringBuilder();
      for(int j=0;j< str.length();j++){
         str1 = Integer.toBinaryString(Integer.valueOf(str.charAt(j)+"",16));
         ///16進制的每一位轉化為二進制
         while(str1.length()<4&&j!=0) str1="0"+str1;///加0
         stringBuilder.append(str1);///加入字符串容器中
      }
      int numtmp = 0;
       BigInteger value = new BigInteger("0");///BigInteger包裝超大數據
       long valuetmp;
       for(int k = stringBuilder.length()-1;k>=0;k--){
          valuetmp = Integer.parseInt(stringBuilder.charAt(k)+"")*(long)Math.pow(2,numtmp);
          ///二進制中一位位轉化為十進制

          value = value.add(BigInteger.valueOf(valuetmp));///a.add(b)為a+b
          numtmp++;
       }
       System.out.println(value);
    }
}

  

方法二:直接運用java庫函數轉換

import java.util.Scanner;

public class Main {
    public static void main(String [] args){
      Scanner sc = new Scanner(System.in);
      String str = sc.next();
      Long ans = Long.parseLong(str,16);
      System.out.println(ans);
    }
}

  

反過來,以10進制轉16進制為例:

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String [] args) {
       Scanner sc = new Scanner(System.in);
       int n = sc.nextInt();
       sc.close();
       String [] sum = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
       ArrayList<String>list = new ArrayList<String>();
       if(n==0) System.out.println(0);
       int yu;
       while(n!=0){
          yu=n%16;
          n=n/16;
          list.add(sum[yu]);
       }
       String str="";
      for(int i=list.size()-1;i>=0;i--)
         str+=list.get(i);
      System.out.println(str);
    }
}

  


免責聲明!

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



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