黑马程序员技术交流社区

标题: 查表法进行10进制到2/8/16进制的转换 [打印本页]

作者: 迷途老马    时间: 2015-10-16 21:47
标题: 查表法进行10进制到2/8/16进制的转换
package com.itheima;

public class jinZhiChange
{
            public static void main(String[] args)   
            {  
                toBin(6);  
                toHex(60);  
                toBa(30);  
                System.out.println("Hello World!");  
            }  
            //转2  
            public static void toBin(int num)  
            {  
                trans(num , 1, 1);  
            }  
            //转16  
            public static void toHex(int num)  
            {  
                trans(num , 15, 4);  
            }  
            //转8  
            public static void toBa(int num)  
            {  
                trans(num , 7, 3);  
            }  
            public static void trans(int num , int base , int offset)  
            {  
                if(num == 0)  
                {  
                    System.out.println(0);  
                    return ;  
                }  
                
                char[] chs = {'0','1','2','3',  
                              '4','5','6','7',  
                              '8','9','a','b',  
                              'c','d','e','f'};  
                //定义一个临时容器;字符数组在被定义后,它的默认初始化值为'\u0000'相当于空格。
                char[] arr = new char[32];
          
                int pos = arr.length;  
                //接下来就要把查到的字符存到 char[]中,也就是要解决一个存储的问题。
                while(num != 0)  
                {  
                        // num 是移动后前面的二进制位所表示的数,temp 是运算后得到的数
                    int temp = num & base;  
                    arr[--pos] = chs[temp];  
                    num = num >>> offset ;  
                }  
                //对存储结果的char数组遍历 ,
                for(int x = pos ; x < arr.length ; x++)  
                {  
                    System.out.print(arr[x]);  
                }  
          
                System.out.println();  
            }   
}





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