HexCardTransform.java 1.38 KB
package com.bsth.util;

import org.apache.commons.lang3.StringUtils;

import java.math.BigInteger;

/**
 * Created by panzhao on 2017/9/27.
 */
public class HexCardTransform {

    /**
     * 16进制卡ID号转10进制
     *
     * @param hexCode
     * @return
     */
    public static String hexConvert(String hexCode) {
        if(StringUtils.isBlank(hexCode))
            return null;
        String cardId10 = "";
        try{
            //16进制补满8位
            hexCode = padLeft(hexCode, 8, '0');

            char[] cardIdArray = hexCode.toCharArray();
            String cardId16Counter = "";
            //倒序
            for (int i = cardIdArray.length - 1; i >= 0; i -= 2) {
                cardId16Counter += cardIdArray[i - 1] + "" + cardIdArray[i];
            }
            //转10进制
            cardId10 = String.valueOf(new BigInteger(cardId16Counter, 16));
            //10进制补满10位
            cardId10 = padLeft(cardId10, 10, '0');
        }catch (Exception e){
            return null;
        }
        return cardId10;
    }

    public static String padLeft(String oriStr, int len, char alexin) {
        String str = "";
        int strlen = oriStr.length();
        if (strlen < len) {
            for (int i = 0; i < len - strlen; i++) {
                str = str + alexin;
            }
        }
        str = str + oriStr;
        return str;
    }
}