java中整数是32位的,可以通过与运算从低位到高位依次获取需要的值转换后的结果是一个字符型数组
public class Test2 {
public Test2() {// TODO 自动生成的构造函数存根
}
public static void main(String[] args) {
int num=213;//11101010
show(toHex(num));
show(toOct(num));
show(trans(num,2));
show(trans(num,8));
show(trans(num,16));
}
public static char[] toHex(int num)
{
char[] chs=new char[]{'0','1','2','3','4',
'5','6','7','8','9','A',
'B','C','D','E','F'};
char[] arr=new char[]{'0','0','0','0','0','0','0','0'};
int pos=arr.length-1;
while(num!=0)
{
arr[pos--]=chs[num&15];
num=num>>>4;
}
return arr;
}
public static char[] toOct(int num)
{
char[] chs=new char[]{'0','1','2','3','4',
'5','6','7'};
char[] arr=new char[]{'0','0','0','0','0','0','0','0','0','0','0'};
int pos=arr.length-1;
while(num!=0)
{
arr[pos--]=chs[num&7];
num=num>>>3;
}
return arr;
}
public static char[] trans(int num,int base)
{
int offset=0;
char[] chs=new char[]{'0','1','2','3','4',
'5','6','7','8','9','A',
'B','C','D','E','F'};
char[] arr=new char[]{'0','0','0','0','0','0','0','0',
'0','0','0','0','0','0','0','0',
'0','0','0','0','0','0','0','0'};
int pos=arr.length-1;
switch(base)
{
case 2:offset=1;break;
case 8:offset=3;break;
case 16:offset=4;break;
default:
}
while(num!=0)
{
arr[pos--]=chs[num&(base-1)];
num=num>>>offset;
}
return arr;
}
public static void show (char[] arr)
{
System.out.print("arr:");
for(int i=0;i<arr.length;i++)
if(i!=arr.length-1)
System.out.print(arr[i]);
else
System.out.println(arr[i]);
}
}