class myToString
{
public static void main(String[] args)
{
String str = mySwitch(655354,2);
System.out.println(str);
}
//进制转换最终版
public static String mySwitch(int shu,int wei)//shu代表要转的数,wei代表进制
{
char [] arr={'1','2','3','4','5',
'6','7','8','9','a',
'b','c','d','e','f'};//定义编码表
char [] arra= new char[33];//零时数组
int temp = shu;
int pos=arra.length;
if(wei==16)//转16进制代码
{
while(shu!=0)
{
temp=shu&15;
arra[--pos]=arr[temp-1];
shu=shu>>>4;
}
return "0x "+myToString(arra,pos);
}
if(wei==8)//转8进制代码
{
while(shu!=0)
{
temp=shu&7;
arra[--pos]=arr[temp-1];
shu=shu>>>3;
}
return "0 "+myToString(arra,pos);
}
if(wei==2)//转2进制代码
{
while(shu!=0)
{
temp=shu&1;
arra[--pos]=arr[temp-1];
shu=shu>>>1;
}
return "0b "+myToString(arra,pos);
}
return "请输入正确的进制";
}
public static String myToString(char arr[],int index)//转字符串方法
{
String temp = "";
for (int x=index;x<arr.length ;x++ )
{
temp= temp+arr[x];
}
return temp;
}
}
以上是我自己改进的任意进制转换方法,为什么数大一点就会出现脚标月结异常,我的容器是33位。保存int型戳戳有余啊, |
|