黑马程序员技术交流社区

标题: 十进制转换以及查表法 [打印本页]

作者: 淡定..    时间: 2015-5-4 10:56
标题: 十进制转换以及查表法
class BufferDemo
{
        public static void main(String[] args)
        {
                //appendString(6);
                //ToHax(60);
                //Cha(60);
                //toBin(6);
                toBa(60);
        }
        //十进制==>二进制
        public static void appendString(int num)
        {
                StringBuffer sb=new StringBuffer();//建立容器
                while(num>0)
                {
                        sb.append(num%2);
                        num =num/2;
                }
                System.out.println(sb.reverse());//reverse反转字符串
        }
        //十进制==>十六进制
        public static void ToHax(int num)
        {
                StringBuffer toH=new StringBuffer();
                for(int i=0;i<8;i++)
                {
                        int tem=num & 15;
                        if(tem>9)
                        {
                                toH.append((char)(tem-10+'A'));
                        }
                        else
                        {
                                toH.append(tem);
                        }
                        num=num >>> 4;
                }
                System.out.println(toH.reverse());
        }
        //查表法
        public static void Cha(int num)
        {
                char[] arr={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                char[] xin=new char[8];
                int pos =xin.length;
                while(num !=0)
                {
                        int temp=num&15;
                        xin[--pos]=arr[temp];
                        num=num >>> 4;
                }
                for(int i=pos;i<xin.length;i++)
                {
                        System.out.print(xin[i]);
                }
        }
        //十进制==>二进制
        public static void toBin(int num)
        {
                trans(num,1,1);
        }
        //十进制==>八进制
        public static void toBa(int num)
        {
                trans(num,7,3);
        }
        //十进制==>十六进制
        public static void toHex(int num)
        {
                trans(num,15,4);
        }
        //进制转换优化
        public static void trans(int num,int base,int yidong)
        {
                char[] arr={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                char[] arr_lin=new char[32];
                int pos=arr_lin.length;
                while(num !=0)
                {
                        int temp=num&base;
                        arr_lin[--pos]=arr[temp];
                        num=num >>> yidong;
                }
                for(int i=pos;i<arr_lin.length;i++)
                {
                        System.out.print(arr_lin[i]);
                }
        }
}




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