十进制转成十六进制:
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" )); } }