欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中进制之间的相互转化

程序员文章站 2024-03-18 14:32:34
...

java中进制之间的相互转化

进制之间的相互转化 java其实已经封装好了 API中可以看到 在java.lang.Integer就可以看到
java中进制之间的相互转化
以上三个分别是十进制转化为二,八,十六进制的方法


        String str=Integer.toBinaryString(16);
        System.out.println(str);
        String str1=Integer.toOctalString(16);
        System.out.println(str1);
        String str2=Integer.toHexString(16);
        System.out.println(str2);

结果

10000
20
10

java中进制之间的相互转化

我们看到了tostring的另一个用法 它也可以用来用十进制转化为其他进制

        String s1=Integer.toString(999, 2);
        System.out.println(s1);
        String s2=Integer.toString(999, 8);
        System.out.println(s2);
        String s3=Integer.toString(999, 16);
        System.out.println(s3);
1111100111
1747
3e7

java中进制之间的相互转化
这个是二,八,十六转化为十进制的方法

         String a=Integer.valueOf("3e7",16).toString();
        System.out.println(a);
        String b=Integer.valueOf("1747",8).toString();
        System.out.println(b);
        String c=Integer.valueOf("11111",2).toString();
        System.out.println(c);
999
999
31

由上面的例子我们可以用来2,8,16 进制之间的相互转化 也就是先转化为十进制 然后再转化为其他进制来个二进制转化为十六进制

String c=Integer.toHexString(Integer.valueOf("11111",2));
System.out.println(c);
1f

下面的是自己写的十进制转化为二进制的方法

      System.out.println("十进制转化为二进制");
        Scanner a=new Scanner(System.in);
        int str=a.nextInt();
        StringBuilder sb=new StringBuilder();
        for(int i=0;;i++){
            int j=str%8;
            sb.append(j);
            str=str/8;
            if(str==1){
                sb.append(str);
                break;
            }

        }
      System.out.println(sb.reverse());

二进制转化为十进制的方法

System.out.println("二进制转化为10进制");
        Scanner a=new Scanner(System.in);
        String str=a.nextLine();
        char []s=str.toCharArray();
        double j=0;
        for(int i=0;i<s.length;i++){
            j=j+Math.pow(8,s.length- i-1)*Integer.parseInt(String.valueOf(s[i]));
        }
        System.out.println(j);

以后还会补充位运算