进制转换(java)

1、十进制转换为其他进制

同理十进制转换为二进制、八进制、16进制都可以使用这种方式

2、二进制转换为十进制

在这里插入图片描述

3、实例代码

public class BinaryConversion {


    public static void main(String[] args) {
        int age = 30;
        System.out.println(age + "对应的十六进制为:" + Integer.toHexString(age) + "(十进制转换为其他进制)");
        System.out.println(age + "对应的八进制为:" + Integer.toOctalString(age) + "(十进制转换为其他进制)");
        System.out.println(age + "对应的二进制为:" + Integer.toBinaryString(age) + "(十进制转换为其他进制)");
        System.out.println(age + "对应的5进制为:" + Integer.toString(age, 5) + "(十进制转换为其他进制)");

        conversion(530, 9);

        /**
         * Integer.parseInt((String) s,(int) radix);
         * 第一个参数是待转换的数字字符串;
         * 第二个参数是这个待转换的数字字符串是多少进制的
         * (如2进制数1110转换为10进制数:Integer.parseInt("1110", 2);)--需要知道待转换成十进制的数字是什么进制的
         */
        System.out.println( Integer.toHexString(age) +"对应的十进制为:" +
                Integer.parseInt(Integer.toHexString(age), 16) + "(十六进制转换为十进制)");
        System.out.println(Integer.toOctalString(age) + "对应的十进制为:" +
                Integer.parseInt(Integer.toOctalString(age), 8) + "(八进制转换为十进制)");
        System.out.println(Integer.toBinaryString(age) +"对应的十进制为:" +
                Integer.parseInt(Integer.toBinaryString(age), 2) + "(二进制转换为十进制)");
        System.out.println(Integer.toString(age, 5) + "对应的十进制为:" +
                Integer.parseInt(Integer.toString(age), 5) + "(五进制转换为十进制)");


    }

    private static char[] array = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
            .toCharArray();

    /**
     * 自定义的10进制转换为其他进制的算法(原理就是辗转相除法)
     * number为需要转换的十进制数字,binaryNum为需要转换的进制位;如将100转换为3进制的数为conversion(100, 3);
     * @param number
     * @param binaryNum
     */
    public static void conversion(int number, int binaryNum) {

        //String是不可变的,每次改变都要新建一个Strng 很浪费时间
        //对字符串操作的效率比较 StringBuilder > StringBuffer > String
        StringBuilder result = new StringBuilder();
        System.out.print(number + "对应的" + binaryNum + "进制为:");
        while(number > 0) {
            result.insert(0, array[number % binaryNum]);
            number /= binaryNum;
        }
        System.out.println( result.toString() + "(十进制转换为其他进制)");
    }
}


### 进制转换Java 中的实现 #### 使用内置函数完成进制转换 Java 提供了一些内置的方法来处理不同进制之间的转换。例如,`Integer.toString()` 方法可以用来将整数从十进制转换为指定的目标进制字符串表示形式[^1]。 以下是具体的代码示例: ```java public class BaseConversion { public static void main(String[] args) { int decimalNumber = 25; // 将十进制转换为二进制 String binaryString = Integer.toBinaryString(decimalNumber); System.out.println("十进制转二进制: " + binaryString); // 将十进制转换为八进制 String octalString = Integer.toOctalString(decimalNumber); System.out.println("十进制转八进制: " + octalString); // 将十进制转换为十六进制 String hexString = Integer.toHexString(decimalNumber); System.out.println("十进制转十六进制: " + hexString); // 如果需要将其他进制转换回十进制 int fromBinary = Integer.parseInt(binaryString, 2); int fromOctal = Integer.parseInt(octalString, 8); int fromHex = Integer.parseInt(hexString, 16); System.out.println("二进制转十进制: " + fromBinary); System.out.println("八进制转十进制: " + fromOctal); System.out.println("十六进制转十进制: " + fromHex); } } ``` 上述代码展示了如何通过 `Integer` 类中的静态方法轻松地进行各种进制间的相互转换[^3]。 #### 自定义算法实现进制转换 如果不想依赖于 Java 的内置库,也可以手动编写逻辑来进行进制转换。下面是一个例子,展示如何将任意给定的十进制数值转换为目标进制(如二进制、八进制或十六进制)。 ```java import java.util.Stack; import java.util.Scanner; public class CustomBaseConverter { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入要转换的十进制数:"); int number = scanner.nextInt(); System.out.print("请输入目标进制(2/8/16):"); int base = scanner.nextInt(); String result = convertToBase(number, base); System.out.printf("%d 转换到 %d 进制的结果是:%s%n", number, base, result); } private static String convertToBase(int num, int targetBase) { Stack<Integer> stack = new Stack<>(); StringBuilder sb = new StringBuilder(); while (num > 0) { int remainder = num % targetBase; if (remainder >= 10 && targetBase == 16) { // 处理十六进制字母部分 char c = (char)(remainder - 10 + 'A'); stack.push(c); } else { stack.push(remainder); } num /= targetBase; } while (!stack.isEmpty()) { Object obj = stack.pop(); if(obj instanceof Character){ sb.append((Character)obj); }else{ sb.append(obj); } } return sb.toString(); } } ``` 此自定义解决方案允许更灵活的操作,并加深了对底层原理的理解。 #### 总结 无论是利用现成的工具还是自己动手构建转换器,在 Java 编程环境中都可以高效地解决多样的进制转换需求。以上两种方式各有优劣,前者简单快捷适合日常应用;后者则有助于深入理解计算机科学基础概念。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值