public class text {
public static void main (String[] args){
System.out.println(toBin(1));
System.out.println(toOct(7));
System.out.println( toHex(979989897));
}
public static String toBin(int num){
return trans(num,1,1);//此处注意与二进制数1做%运算并无符号右移(>>>)一位
}
public static String toOct(int num){
return trans(num,7,3);//此处注意与二进制数111做%运算并无符号右移(>>>)三位
}
public static String toHex(int num){
return trans(num,15,4);//此处注意与二进制数1111做%运算并无符号右移(>>>)四位
}
public static String trans(int num,int base,int offset){
if(num==0) //在此处进行一个判断 如果是0 就直接返0。并且下面的代码不会在运行
{
return "0";
}
char[] chs={'0','1','2','3','4','5','6',
'7', '8','9','A','B', 'C', 'D','E','F'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0){
int temp=num & base;
arr[--pos]=chs[temp];
num=num>>>offset;
}
// System.out.println("pos="+pos);//此处可以可以略去,保留的目的是为了指针在什么位置
String str=""; //定义一个字符串, 把一个数组变成字符串,就是通过相连接。
for(int x=pos;x<arr.length;x++){
// System.out.print(arr[x]);
str+=arr[x];
}
return str; // System.out.println();
}
}
红色为更改的代码
玩进制一般都会返回一结果给你。而不是打印出来,
应该把这个结果以字符串的方法返回给你。因为这个结果里面会包含很多内容。
|