黑马程序员技术交流社区

标题: java自定义函数实现二进制、八进制、十六进制转换 [打印本页]

作者: 冰深    时间: 2012-11-30 11:06
标题: java自定义函数实现二进制、八进制、十六进制转换
本帖最后由 冰深 于 2012-11-30 11:08 编辑

  Java进制转换方法:移位法进行进制转换的几个方法,下面是我写的,总结一下~源代码都在下面哦~
  1. package cn.itheima;

  2. public class ToHexBinOctDemo {

  3.         /**移位法实现8进制,二进制,十进制转换
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 int num=13;
  8.                 //用Java内置函数与自定义函数输出结果进行对比
  9.                 System.out.println(Integer.toHexString(num));
  10.                 System.out.println(toHex(num));
  11.                
  12.                 System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  13.                 System.out.println(Integer.toBinaryString(num));
  14.                 System.out.println(toBin(num));
  15.                 System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  16.                 System.out.println(Integer.toOctalString(num));
  17.                 System.out.println(toOct(num));
  18.         }
  19.        
  20.         //查表发返回查询16进制的字符串
  21.         public static char getCharHex(int index){
  22.                 char[] hexChars={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  23.                 return hexChars[index];
  24.         }
  25.         //查表发返回查询2进制的字符串
  26.         public static char getCharBin(int index){
  27.                 char[] binChars={'0','1'};
  28.                 return binChars[index];
  29.         }

  30.        
  31.         //转换成16进制,用的是移位4
  32.         private static String toHex(int num) {
  33.                 StringBuffer sb=new StringBuffer();
  34.                 for(int i=0;i<8;i++){
  35.                         int temp=num & 15;//进行&操作(1111)2 =15
  36.                         num=num>>>4;
  37.                         sb.append(getCharHex(temp));
  38.                        
  39.                 }
  40.                 //将反转之后的结果返回
  41.                 return new String(sb.reverse());
  42.         }
  43.        
  44.         //转换成2进制,用的也是移位1
  45.         private static String toBin(int num){
  46.                 StringBuffer sb=new StringBuffer();
  47.                 while(num!=0){
  48.                         int index=num&1;//进行&操作(1)2 =1
  49.                         sb.append(getCharBin(index));
  50.                         num=num>>>1;
  51.                 }
  52.                 return new String(sb.reverse());
  53.         }
  54.        
  55.         //转换成8进制,用移位3;
  56.         private static String toOct(int num){
  57.                 StringBuffer sb=new StringBuffer();
  58.                 while(num!=0){
  59.                         int index=num&7;//进行&操作(111)2 =7
  60.                         sb.append(index);
  61.                         num=num>>>3;
  62.                 }
  63.                
  64.                 return new String(sb.reverse());
  65.         }

  66.        

  67. }
复制代码





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