进制转换-前补零

十进制转十六进制

    /**
     * 十进制数转十六进制数,不够指定位数就在前面补零。超过位数不截取
     * @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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值