java任意進制轉換


java任意進制轉換

前言

我們正常使用的是十進制,計算機使用的是二進制,初次之外還有很多不同的進制,但是轉換方法都相似,這里就整理一下java的進制轉換。

調用函數

十進制轉十六進制
Integer.toHexString(int i)

十進制轉八進制
Integer.toOctalString(int i)

十進制轉二進制
Integer.toBinaryString(int i)

十六進制轉十進制(二進制八進制類似)
Integer.valueOf("FFFF",16).toString()

寫的代碼

這里還寫了一段java代碼,可以用於進行16進制之內的轉換,如果想要增加,只要修改radix數組即可。
兩個函數,一個是其他進制轉十進制的,一個是十進制轉任意進制的。用的都是基礎算法,按位乘和取余。
(話說我沒有考慮過輸入異常,比如0進制什么的)

  static char[] radix = new char[]{'0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
      'e', 'f'};

  static int transRadixtoTen(String num, int fromRadix) {
    StringBuilder s = new StringBuilder(num);
    int number = 0;
    for (int i = 0; i < s.length(); i++) {
      char temp = s.charAt(i);
      if (temp <= '9' && temp >= '0') {
        number += temp - '0';

      } else if (temp <= 'z' && temp >= 'a') {
        number += temp - 'a' + 10;

      } else if (temp <= 'Z' && temp >= 'A') {
        number += temp - 'A' + 10;

      }
      if (i != s.length() - 1) {
        number *= fromRadix;
      }
    }
    return number;
  }

  static String transRadixtoOther(String num, int fromRadix, int toRadix) {
    int number = transRadixtoTen(num, fromRadix);
    System.out.println(number);
    StringBuilder s = new StringBuilder();
    while (number != 0) {
      s.append(radix[number % toRadix]);
      number = number / toRadix;
    }
    return s.reverse().toString();
  }


免責聲明!

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



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