代码实现 //转换成十六进制 public static void toHex(int n){ char[] arr=new char[8]; int index=0; while(true){ int code=n%16; //1 //因为16进制中没有10,11,12,13,14,15 而是用a,b,c,d,e,f来代表 char c=0; if(code>9){ c=(char)(code-10+'a'); //13-10+'a'==99 强转 'c' }else{ c=(char)(code+'0'); //1+'0'==49 强转 '1' } arr[index++]=c; //index++是为了将下一个得到的值保存到数组的下一个位置 n=n/16; if(n<16){ arr[index]=(n>9)?(char)(n-10+'a'):(char)(n+'0'); break; } } for(int i=index;i>=0;i--){ System.out.print(arr); } } //转换成八进制和二进制就不作详细代码说明
8.查表法 /* code能得到的值是0-15,我们转换后需要将大于9以上的数字转换成对应的A,B,C,D,E,F这些字母我们能不能定义一个数组{'0','1','2','3','4','5','','7','8','9','A','B','C','D','E','F'};是不是发现当我们的code为几的时候,将code当成数组的下标,就可以得到对应的值。 这就是查表法表中的元素与我们操作后得到的值有对应关系 */ /* if(code>9){ arr[index++]=(char)(code-10+'A'); }else{ arr[index++]=(char)(code+'0'); } */ arr[index++]=biao[code]; n=n>>>4; } /* for(int i=index-1;i>=0;i--){ System.out.print(arr); } */ printArray(arr,index); } //打印数组的方法 public static voidprintArray(char[] ch,int index){ for(inti=index-1;i>=0;i--){ System.out.print(ch); } System.out.println(); } 查表法优化 /* n 要转换的值 num 要&操作的值 二进制&1 八进制 &7 十六进制 &15 offset 移动位数 二进制1 八进制3 十六进制 4 */ public static voidtoChange(int n,int num,int offset){ char[]biao={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char[] arr=new char[32]; int index=0; while(n!=0){ intcode=n# arr[index++]=biao[code]; n=n>>>offset; } printArray(arr,index);
} |