10进制转16进制位数不足自动补全


前言

提示:今天做硬件读卡的时候10进制转换16进制 出现转换后16进制只有7位,查找资料 发现需要进行补位操作 记录学习


10进制转16进制自动补全8位

代码如下:

/**
 * @program: chargingpile
 * @description: 转成16进制卡号的工具类
 * @author: Mr.ch
 * @create: 2020-08-31
 **/
public class HexUtils {

     /**
     * 解密后的卡号需要高低位转换(不足8位前面补0)
     * 才能得到需要的16进制卡号
     * @param serialNum
     * @return
     */
    public static String getHexCardNum(String serialNum) {
        return reverse(hex(Integer.parseInt(serialNum)));
    }

    /**
     * 10进制转16进制
     * @param serialNum
     * @return
     */
    public static String hex(int serialNum) {
        return  String.format("%08x", Integer.valueOf(serialNum));
    }

    /**
     * 十六进制字符串高低位转换
     * @param hex
     * @return
     */
    public static String reverse( String hex) {
        final char[] charArray = hex.toCharArray();
        final int length = charArray.length;
        final int times = length / 2;
        for (int c1i = 0; c1i < times; c1i += 2) {
            final int c2i = c1i + 1;
            final char c1 = charArray[c1i];
            final char c2 = charArray[c2i];
            final int c3i = length - c1i - 2;
            final int c4i = length - c1i - 1;
            charArray[c1i] = charArray[c3i];
            charArray[c2i] = charArray[c4i];
            charArray[c3i] = c1;
            charArray[c4i] = c2;
        }
        return new String(charArray).toUpperCase();
    }
}

使用

代码如下:

 @Test
    public void testGetStr() {

         System.out.println(HexUtils.getHexCardNum("113995025"));
    }

参考文档地址
java 中 10进制 转为 4位 或者8位 16进制数
JAVA中String.format的用法
java怎样实现十六进制字符串高低位转换 双位反转


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值