1、2、8、10、十六進制之間的轉換 java
int n1 = 14;
//十進制轉成十六進制:
Integer.toHexString(n1);
//十進制轉成八進制
Integer.toOctalString(n1);
//十進制轉成二進制
Integer.toBinaryString(12);
//十六進制轉成十進制
Integer.valueOf("FFFF",16).toString();
//十六進制轉成二進制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
//十六進制轉成八進制
Integer.toOctalString(Integer.valueOf("FFFF",16));
//八進制轉成十進制
Integer.valueOf("576",8).toString();
//八進制轉成二進制
Integer.toBinaryString(Integer.valueOf("23",8));
//八進制轉成十六進制
Integer.toHexString(Integer.valueOf("23",8)); app
//二進制轉十進制
Integer.valueOf("0101",2).toString();
//二進制轉八進制
Integer.toOctalString(Integer.parseInt("0101", 2));
//二進制轉十六進制
Integer.toHexString(Integer.parseInt("0101", 2)); spa
能夠看到其餘進制之間相互轉換,是先轉爲10進制,而後再轉。 code
2、十進制轉任意進制(2-16); string
public static String baseString(int num,int base){ if(base > 16){ throw new RuntimeException("進制數超出範圍,base<=16"); } StringBuffer str = new StringBuffer(""); String digths = "0123456789ABCDEF"; Stack<Character> s = new Stack<Character>();
boolean isMinus = false;//判斷輸入的數是否是負數 if(numStr.charAt(0)=='-'){ num = Integer.valueOf(numStr.substring(1)); isMinus = true; }
while(num != 0){ s.push(digths.charAt(num%base)); num/=base; } if(isMinus)
str.append("-");
while(!s.isEmpty()){ str.append(s.pop()); } return str.toString(); }
public static String baseNum(String num,int srcBase,int destBase){ if(srcBase == destBase){ return num; } String digths = "0123456789ABCDEF"; char[] chars = num.toCharArray(); int len = chars.length; if(destBase != 10){//目標進制不是十進制 先轉化爲十進制 num = baseNum(num,srcBase,10); }else{ int n = 0; for(int i = len - 1; i >=0; i--){ n+=digths.indexOf(chars[i])*Math.pow(srcBase, len - i - 1); } return n + ""; } return baseString(Integer.valueOf(num),destBase); }