最近在找进制转换的学习视频,发现解法是千奇百怪

有从c++直接转化成java的短除法

还有一堆莫名其妙的方法

在查了一晚上资料后,我对此做了整理

16进制转化成8进制

    public static void main(String[] args) {
        // 16进制数的字符串表示
        String hex = "39";

        // 将16进制数转换为整数
        int decimal = Integer.parseInt(hex, 16);

        // 将整数转换为8进制的字符串表示
        String octal = Integer.toOctalString(decimal);

        // 输出结果
        System.out.println("16进制数 " + hex + " 对应的8进制数为: " + octal);
    }
}

2进制转化成10进制


public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int a= scanner.nextInt();
        //输入整型数

        String string=Integer.toString(a);
        //将整数转化成字符串

        int b=Integer.parseInt(string,2);
        //进制转换,第一个参数是字符串,第二个参数是基数,进制
        
        System.out.println(b);
    }
}

16进制转化成10进制


public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String str=scanner.nextLine();
        //输入一个十六进制的字符串

        int a=Integer.parseInt(str,16);
        //将字符串按照16进制转化成整形数

        System.out.println(a);
        
    }
}

10进制转化成2进制


public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int a= scanner.nextInt();
        //输入整型数

        String string=Integer.toBinaryString(a);
        //将整数转化成字符串

        System.out.println(string);
    }
}

10进制转化成16进制

import java.util.Scanner;

public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in);

    int a= scanner.nextInt();
    //输入整型数

    String string=Integer.toHexString(a);
    //将整数转化成字符串

    System.out.println(string);
}

}

总结

Integer类中的静态方法parseInt可以将字符串转化成十进制数

即是字符串转整形数 这时的形参是字符串

而这个parsInt方法重载

当传入两个形参的时候 第一形参依旧是字符串 第二个形参可以传入进制基数radix

代表你想把什么进制的数转化成十进制数

获得到的十进制数 可以再通过Integer类里面的静态方法to...转化为对应的进制

返回值类型是字符串

Integer.toOctalString()转化成八进制

Integer.toBinaryString() 转化为二进制

Integer.toHexString() 转化为十六进制

以下介绍一下短除法

定义一个方法

形参是十进制数,进制基数radix


public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int a= sc.nextInt();
        //输入一个十进制的字符串

        String str=jinzhizhuanhuan(a,2);

        System.out.println(str);
    }

    public static String jinzhizhuanhuan(int a,int b){
        StringBuilder sb=new StringBuilder();
        while(a>0){
            sb.append(a%b);
            a/=b;
        }
        return sb.reverse().toString();
    }
}

alt alt