黑马程序员技术交流社区
标题: 第五天 总结(下) [打印本页]
作者: 陈郊 时间: 2012-10-2 08:43
标题: 第五天 总结(下)
代码实现
//转换成十六进制
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);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |