需求:十进制转换为十六进制、八进制、二进制
思路:十六进制、八进制、二进制均是大量的、有序的、有对应关系的一组数据,可以用查表法解决
class ArrayTest9
{
public static void main(String[] args)
{
int num=60;
String str_hex=toHex(num);
String str_oct=toOctal(num);
String str_bin=toBinary(num);
System.out.println("hex="+str_hex);
System.out.println("octal="+str_oct);
System.out.println("binary="+str_bin);
//System.out.println("Hello World!");
}
//十进制-->十六进制
public static String toHex(int num)
{
return "0x"+trans(num,15,4);
}
//十进制-->八进制
public static String toOctal(int num)
{
return "0"+trans(num,7,3);
}
//十进制-->二进制
public static String toBinary(int num)
{
return trans(num,1,1);
}
/*需求:用查表法十进制转其他进制*/
public static String trans(int num,int base,int offset)
{
//1、建表
char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//2、创建临时容器
char[] arr=new char[32];
//3、定义临时容器的索引
int index=arr.length;
//4、通过循环转换num并且存入临时容器
while(num!=0)
{
int temp=num&base;
arr[--index]=chs[temp];
num=num>>>offset;
}
//5、调用打印方法将容器字符转换为字符串返回
return toString(arr,index);
}
public static String toString(char[] arr,int index)
{
//1、定义一个字符串变量存字符数组元素
String temp="";
for (int x=index;x<arr.length ;x++ )
{
temp=temp+arr[x];
}
return temp;
}
}