//改进后,正确的方法。- class myTranse //将一个数字转化为2、8、10进制
- {
- public static void main(String[] args)
- {
- sop(transe(12978,16));
- sop(transe(11,8));
- sop(transe(11,2));
- }
- public static int[] transe(int num,int jinZhi)//此处的jinZhi指要将num转化为的进制类型,只能填2、8、16;
- {
- if(jinZhi==2)//当需要转化为二进制的时候
- {
- int length=0;//定义数组的长度,初始化为0;
- int temp=num;//定义一个变量,临时存储num
- while(temp>0)//第一次循环,确定数组的准确的长度
- {
- length++;
- temp>>=1;
- }
- int[] arr=new int[length];
- while(num>0)//再次循环,将计算结果放入数组中
- {
- arr[--length]=num&1;
- num>>=1;
- }
- return arr;
- }
- if(jinZhi==8)//当要转化为8进制时
- {
- int length=0;//定义数组的长度,初始化为0;
- int temp=num;//定义一个变量,临时存储num
- while(temp>0)//第一次循环,确定数组的准确的长度
- {
- length++;
- temp>>=3;
- }
- int[] arr=new int[length];
- while(num>0)//再次循环,将计算结果放入数组中
- {
- arr[--length]=num&7;
- num>>=3;
- }
- return arr;
- }
- if(jinZhi==16)//当要转化为16进制时
- {
- int length=0;//定义数组的长度,初始化为0;
- int temp=num;//定义一个变量,临时存储num
- while(temp>0)//第一次循环,确定数组的准确的长度
- {
- length++;
- temp>>=4;
- }
- int[] arr=new int[length];
- while(num>0)//再次循环,将计算结果放入数组中
- {
- arr[--length]=((num&15)>9)?((num&15)+55):num&15;
- num>>=4;
- }
- return arr;
- }
- return new int[0];
- }
- private static void sop(int[] arr)
- {
- for(int i=0;i<arr.length;i++)
- {
- if(arr[i]<10)
- System.out.print(arr[i]);
- else
- System.out.print((char)arr[i]);
- }
- System.out.println();
- }
- }
复制代码 |