黑马程序员技术交流社区
标题:
进制之间的转换
[打印本页]
作者:
xiaoya0o0o
时间:
2015-9-16 22:07
标题:
进制之间的转换
class ArrayTest8
{
public static void main(String[] args)
{
int num = 60;
String str_bin = toBinary(num);
String str_oct = toOctal(num);
String str_hex = toHex(num);
System.out.println("bin:"+str_bin);
System.out.println("oct:"+str_oct);
System.out.println("hex:"+str_hex);
//Java已经提供的功能。
System.out.println(Integer.toBinaryString(60));
System.out.println(Integer.toOctalString(60));
System.out.println(Integer.toHexString(60));
}
/*
十进制-->十六进制。
*/
public static String toHex(int num)
{
return "0x"+trans(num,15,4);
}
/*
十进制-->二进制。
*/
public static String toBinary(int num)
{
return trans(num,1,1);
}
/*
十进制-->八进制。
*/
public static String toOctal(int num)
{
return "0"+trans(num,7,3);
}
//用于进制转换。
public static String trans(int num,int base,int offset)
{
if(num==0)
return "0";
//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)
{
//5,对num进行&运算。
int temp = num & base;
//6,根据&运算后的结果作为角标查表,获取对应的字符。并将字符存储到临时容器中。
arr[--index] = chs[temp];
//7,对num进行右移。
num = num >>> offset;
}
return toString(arr,index);
}
//定义一个功能,将字符数组转成字符串。
public static String toString(char[] arr,int index)
{
String temp = "";
for(int x=index; x<arr.length; x++)
{
temp = temp + arr[x];
}
return temp;
}
}
作者:
夏木南生
时间:
2015-9-16 22:33
大概秋秋秋秋秋
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2