进制转换器。输入一个十进制数,转成二进制、八进制、十六进制。程序结果验证,可以用系统自带的计算器验证。
这种方法主要思路是人工10进制转2进制时减法的延伸,可能写的不太好大家见谅
package ch05;
import java.util.Scanner;
public class ex2_2 {
static long two[]=new long[40];
static long o[]=new long[20];
static long ox[]=new long[10];
/**
* 存储各个进制转换的数字比如2就存2 4 8 16 32
* @param s
* @param w
*/
private static void fz(long s[],long w) {
// TODO Auto-generated method stub
long sum=1;
for(int i=0;i<s.length;i++)
{
s[i]=sum;
sum=sum*w;
//System.out.println(s[i]);
}
}
/**
* 转换过程
* @param arr
* @param a
*/
private static void zhuanhuan(long arr[],long a) {
// TODO Auto-generated method stub
int flag=0;
for(int i=arr.length-1;i>=0;i--)
{
if(a>=arr[i])
{
flag=1;
}
if(flag==1)
{
if(a/arr[i]>9)
{
System.out.print((char)(a/arr[i]%10+'a'));
}
else
{
System.out.print(a/arr[i]);
}
a=a%arr[i];
}
}
}
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
long a=input.nextInt();
fz(two,2);
fz(o,8);
fz(ox,16);
long a1=a;
System.out.println("二");
zhuanhuan(two, a);
System.out.println();
System.out.println("八");
zhuanhuan(o, a);
System.out.println();
System.out.println("十六");
zhuanhuan(ox, a);
}
}