Java中的进制转换

来源:互联网 发布:c语言static volatile 编辑:程序博客网 时间:2024/06/06 20:00

方法一:

       java的包lang中,有一个类integer,类中包含进制相互转换的方法(lang是默认包,不需要导入)

          如:1. 10进制转换为16进制:  Integer.toHexString(int i);

                           例:   System.out.println(Integer.toHexString(28));

                                    输出结果为:1c

                 2. 10进制转换为8进制 :   Integer.toOctalString(int i);

                          例:  System.out.println(Integer.toOctalString(28));

                                   输出结果为: 34

                 3. 10进制转换为2进制 :Integer.toBinaryString(int i);

                         例:   System.out.println(Integer.toBinaryString(28));

                                   输入结果 :11100

                 4. 16进制转换为10进制 : Integer.valueOf("FFFF",16);

                        例 :   System.out.println(Integer.valueOf("28",16);

                                   输出结果 : 40 (此时返回的是int型)

                                   System.out.println(Integer.valueOf("28",16).toString());

                                   输出结果 : 40  (此时返回的是String型)

                5.  8进制转换为10进制 : Integer.valueOf("765",8);

                       例 :    System.out.println(Integer.valueOf("27",8).toString());

                                   输出结果 : 23 

               6. 2进制转换为10进制 :Integer.valueOf("0101",2);

                       例 :    System.out.println(Integer.valueOf("101",2));

                                   输出结果 : 5  


说明:integer类中的valueOf方法:

                       public static Integer valueOf(String s, int radix);

                       s:给定的要解析的字符,(即我们要转换的数实际是以字符串的形式,使用变量声明时应该用String)

                       radix :解析s时使用的基数,(即要将s转换成多少进制的数)

                      此时返回的值是一个整型数,而不是字符串。如果要转换成字符串,需要加上(  .String()    5所示)



方法二 :以16转换为10为例:

                代码如下:

                               String a=input.next();             //输入一个16进制字符串(input所在类需要导入)

                                int len=a.length();                 //字符串a的长度

                                int sum = 0;                          //10进制最后的求和                         

                                for(int i=0;i<len;i++){

                                      char b=a.charAt(len-1-i);               //分别取出字符串里每个字符

                                       int n=Character.digit(b,16)           //将该位上的字符转换为16进制的数

                                       sum+=n*(1<<(4*i))                        //将16进制数对应的位的值求出,并相加,得出10进制的结果(此处计算机默认是10进制的加减)

                                }                  

                     


                        




例:输入a,输出10


 String a=input.next();  

char b=a.charAt(0);

//上面的代码是获取输入的一个字符

  int n=Character.digit(b,16); 

//Character.digit(char ch,int radix);    返回指定基数的指定字符(Unicode代码点)的数值。

//即将字符b转换为16进制的数

 System.out.println(n);

原创粉丝点击