JAVA中的進位轉換問題

來源:互聯網
上載者:User

標籤:sem   pen   integer   java   examples   prefix   equals   如何   依次   

十進位轉成十六進位: 

Integer.toHexString(int i) 

十進位轉成八進位 

Integer.toOctalString(int i) 

十進位轉成二進位 

Integer.toBinaryString(int i) 

十六進位轉成十進位 

Integer.valueOf("FFFF",16).toString() 

八進位轉成十進位 

Integer.valueOf("876",8).toString() 

二進位轉十進位 

Integer.valueOf("0101",2).toString()

有什麼方法可以直接將2,8,16進位直接轉換為10進位的嗎?

java.lang.Integer類 

parseInt(String s, int radix)

使用第二個參數指定的基數,將字串參數解析為有符號的整數。

examples from jdk: 
parseInt("0", 10) returns 0 
parseInt("473", 10) returns 473 
parseInt("-0", 10) returns 0 
parseInt("-FF", 16) returns -255 
parseInt("1100110", 2) returns 102 
parseInt("2147483647", 10) returns 2147483647 
parseInt("-2147483648", 10) returns -2147483648 
parseInt("2147483648", 10) throws a NumberFormatException 
parseInt("Kona", 10) throws a NumberFormatException 
parseInt("Kona", 27) returns 411787

進位轉換如何寫(二,八,十六)不用演算法

Integer.toBinaryString 
Integer.toOctalString 
Integer.toHexString

任意進位的轉換

import java.util.HashMap;  import java.util.Map;  import java.util.Stack;  public class HexTransformatUtil {        /**      * 將十進位轉換為任意進位值      * @param digths 轉換後的進位最小位上,依次出現的字元值,比如26進位"ABCDEFGHIJKLMNOPQRSTUVWXYZ"      * @param num 將被轉換的十進位值      * @param length 轉換到指定字串後,如果不足length長度位,自動補足最小值,比如26進位"ABCDEFGHIJKLMNOPQRSTUVWXYZ"將在最前補"a"      * @return      */      public static String hex10ToAnly(String digths, int num,int length){            StringBuffer str = new StringBuffer("");            int base = digths.trim().length();          if(0==num){              str.append(digths.charAt(0));          }else{              Stack<Character> s = new Stack<Character>();                while(num != 0){                    s.push(digths.charAt(num%base));                    num/=base;                }                while(!s.isEmpty()){                    str.append(s.pop());                }          }          String prefix = "";          String suffix = str.toString();          if(length>suffix.length()){              for(int count = 0;count<length-suffix.length();count++){                  prefix = prefix + digths.charAt(0);              }          }          return prefix + suffix;        }              /**      * 將任意進位轉換為十進位值      * @param digths 轉換前的進位最小位上,依次出現的字元值,比如26進位"ABCDEFGHIJKLMNOPQRSTUVWXYZ"      * @param hexValue 轉換前的進位字串值      * @return      */      public static int hexAnlyTo10(String digths, String hexValue){            if(null==hexValue||"".equals(hexValue.trim()))  return 0;          int base = digths.trim().length();                    Map<String,Integer> digthMap = new HashMap<String,Integer>();          int count=0;          for(char item : digths.trim().toCharArray()){              digthMap.put(""+item, count);              count++;          }          String str = new StringBuffer(hexValue.trim()).reverse().toString();          int sum = 0;          for(int index = 0;index<str.length();index++){              sum = new Double(Math.pow(base, index)).intValue() * digthMap.get(""+str.charAt(index)) +sum;          }          return sum;      }              public static void main(String[] args) {          //將十進位"0123456789"值55轉換為26進位“ABCDEFGHIJKLMNOPQRSTUVWXYZ”對應的值,不需要格式化最後輸出字串          System.out.println(hex10ToAnly("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 55, 0));                    //將26進位“ABCDEFGHIJKLMNOPQRSTUVWXYZ”字串值“CD”轉換為十進位"0123456789"值55對應的值,不需要格式化最後輸出字串          System.out.println(hexAnlyTo10("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "CD" ));      }  }    

  

JAVA中的進位轉換問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.