A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廿乙木 中级黑马   /  2014-8-18 13:03  /  865 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  myToString
{
        public static void main(String[] args)
        {
                String str = mySwitch(655354,2);
                System.out.println(str);
        }
        //进制转换最终版
        public static String mySwitch(int shu,int wei)//shu代表要转的数,wei代表进制
        {
                        char [] arr={'1','2','3','4','5',
                                                '6','7','8','9','a',
                                                'b','c','d','e','f'};//定义编码表
                        char [] arra= new char[33];//零时数组
                        int temp = shu;
                        int pos=arra.length;
               
                if(wei==16)//转16进制代码
                {
                       
                        while(shu!=0)
                        {
                                temp=shu&15;
                               
                                arra[--pos]=arr[temp-1];
                                shu=shu>>>4;

                        }
                        return "0x "+myToString(arra,pos);
                }
                if(wei==8)//转8进制代码
                {
                        while(shu!=0)
                        {
                                temp=shu&7;
                               
                                arra[--pos]=arr[temp-1];
                                shu=shu>>>3;

                        }
                        return "0 "+myToString(arra,pos);
                }
                if(wei==2)//转2进制代码

                {
                        while(shu!=0)
                        {
                                temp=shu&1;
                               
                                arra[--pos]=arr[temp-1];
                                shu=shu>>>1;
                        }

                        return "0b "+myToString(arra,pos);
                }
               
                       
                        return "请输入正确的进制";
               


       
        }
        public static String myToString(char arr[],int index)//转字符串方法
        {
                String temp = "";
                for (int x=index;x<arr.length ;x++ )
                {
                        temp= temp+arr[x];
                }
       
        return temp;
       
        }
}
以上是我自己改进的任意进制转换方法,为什么数大一点就会出现脚标月结异常,我的容器是33位。保存int型戳戳有余啊,

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马