进制转换-前补零

本文详细介绍了如何将十进制数转换为十六进制数,并提供了不足位数补零的方法。同时,也讲解了如何将十六进制数转换回十进制数,包括当位数不足时的补零策略以及是否允许超出指定长度的选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十进制转十六进制

    /**
     * 十进制数转十六进制数,不够指定位数就在前面补零。超过位数不截取
     * @param num 十进制数
     * @param digits 位数,转成多少位的十六进制数
     * @return
     */
    public static String decimal2Hex(Integer num,int digits){
        return String.format("%0"+digits+"x",num);
    }

测试:

    @Test
    public void decimal2Hex(){
        String result = StringUtil.decimal2Hex(11,4);
        System.out.println(result);
        result = StringUtil.decimal2Hex(0x11,4);
        System.out.println(result);
    }

输出:

000b
0011

十六进制转十进制

/**
     * 十六进制数转十进制数,不够指定位数就在前面补零。超过位数不截取
     * @param hexStr
     * @param digits 位数,转成多少位的十进制数
     * @return
     */
    public static String hex2Decimal(String hexStr, int digits){
        return String.format("%0"+digits+"d",new BigInteger(hexStr, 16),true);
    }
    /**
     * 十六进制数转十进制数,不够指定位数就在前面补零。
     * 如果不允许超出位数,则返回0
     * @param hexStr
     * @param digits
     * @param allowExceedDigits 为false且超出长度将返回指定位数的0
     * @return
     */
    public static String hex2Decimal(String hexStr, int digits, boolean allowExceedDigits){
        String result = String.format("%0"+digits+"d",new BigInteger(hexStr, 16));
        if (!allowExceedDigits&&result.length()>digits){
            return String.format("%0"+digits+"d",0);
        }
        return result;
    }

测试:

    @Test
    public void hex2Decimal(){
        String result = StringUtil.hex2Decimal("1abcd",8);
        System.out.println(result);
        result = StringUtil.hex2Decimal("1abcd",4,true);
        System.out.println(result);
        result = StringUtil.hex2Decimal("1abcd",4,false);
        System.out.println(result);
    }

输出

00109517
109517
0000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值