进制抓换

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]);
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值