標籤: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中的進位轉換問題