問題描述:
現有的Java庫函數有提供進制轉換的方法
被封裝在Integer對象中.
10進制轉化其他進制 對應的方法,參數:n(原10進制數據),r(進制), 返回值
10進制轉2進制 Integer.toBinaryString(n); 一個二進制字符串.
10進制轉8進制 Integer.toOctalString(n); 一個八進制字符串
10進制轉16進制 Integer.toHexString(n); 一個16進制字符串
10進制轉 r 進制 Integer.toString(100, 16); 一個r進制字符串
具體實現:
public class Main {
public static void main(String[] args) {
int n = 16;
Integer.toHexString(n);//使用Integer對象的進制轉換方法
System.out.println(n + "的八進制是:" + Integer.toOctalString(n));
System.out.println(n + "的二進制是:" + Integer.toBinaryString(n));
System.out.println(n + "的十六進制是:" + Integer.toHexString(n));
System.out.println(n + "的三進制是:" + Integer.toString(n, 3));
}
分析:可以寫一個關於Java 任意進制轉換的方法
利用StringBuilde 對象可隨意更改其值,利用append()方法將值附加到緩沖區,
進制轉換本質就是除留取余數;
代碼測試
import java.util.Scanner;
public class jinzhizhuanhuan {
static char a[] =new char [36];
pubilc static void{
for(int i = 0;i<10;i++) {
a[i]=(char)('0'+i);
}
for(int i=10;i<a.length;i++) {
a[i]=(char)('A'+(i-10));
}
}
static String transRadix(String num,int fromRadix, int toRadix) {
int number=Integer.valueOf(num, fromRadix);
StringBuilder s=new StringBuilder();
while(number!=0) {
if(toRadix==0)
return null;
s.append(a[number%toRadix]);
number=number/toRadix;
}
return s.reverse().toString();
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println(transRadix(s,10,16));
}
}
效果:23
17h