黑马程序员技术交流社区

标题: 第五天 总结(下) [打印本页]

作者: 陈郊    时间: 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&num;  
                           arr[index++]=biao[code];
                            n=n>>>offset;
                    }            
                     printArray(arr,index);
             }





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2