package com.jxkj.util;

/**
 * 
 * @author sourcezero
 *
 */
public class Util {

    /**
     * 16进制字符串解码
     * 
     * @param hex
     * @return
     */
    public static String hexDecode(String hex) {
        int cnt = hex.length() / 4;
        StringBuffer val = new StringBuffer();
        try {
            for (int i = 0; i < cnt; i++) {
                val.append((char) Integer.parseInt(hex.substring(i * 4, i * 4 + 4), 16));
            }
            return val.toString();
        } catch (NumberFormatException e) {
            return val.toString();
        }
    }

    /**
     * 数组转换成十六进制字符串
     * 
     * @param byte[]
     * @return HexString
     */
    public static final String bytesToHexString(byte[] bArray) {
        StringBuffer sb = new StringBuffer(bArray.length);
        String sTemp;
        for (int i = 0; i < bArray.length; i++) {
            sTemp = Integer.toHexString(0xFF & bArray[i]);
            if (sTemp.length() < 2)
                sb.append(0);
            sb.append(sTemp.toUpperCase());
        }
        return sb.toString();
    }
    /**
     * byte数组转回16进制字符串
     * 
     * @param bytes
     * @return
     */
    public static String bytes2Hex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        String tmp = null;
        for (byte b : bytes) {
            // 将每个字节与0xFF进行与运算,然后转化为10进制,然后借助于Integer再转化为16进制
            tmp = Integer.toHexString(0xFF & b);
            if (tmp.length() == 1) {
                // 每个字节8为,转为16进制标志,2个16进制位
                tmp = "0" + tmp;
            }
            sb.append(tmp);
        }

        return sb.toString();

    }
    /**
     * byte数组转回16进制字符串
     * 
     * @param bytes
     * @return
     */
    public static String bytes2Hex2(byte[] bytes) {
        final String HEX = "0123456789abcdef";
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            // 取出这个字节的高4位,然后与0x0f与运算,得到一个0-15之间的数据,通过HEX.charAt(0-15)即为16进制数
            sb.append(HEX.charAt((b >> 4) & 0x0f));
            // 取出这个字节的低位,与0x0f与运算,得到一个0-15之间的数据,通过HEX.charAt(0-15)即为16进制数
            sb.append(HEX.charAt(b & 0x0f));
        }

        return sb.toString();
    }

    /**
     * 字符串转16进制
     * 
     * @param str
     * @return
     */
    public static String string2Hex(String str) {

        char[] chars = str.toCharArray();
        StringBuffer hex = new StringBuffer();
        for (int i = 0; i < chars.length; i++) {
            String tmp = Integer.toHexString((int) chars[i]);
            hex.append(tmp);
        }
        return hex.toString();
    }

    /**
     * 字符串转16进制,补0
     * 
     * @param str
     * @return
     */
    public static String string2Hex(String str, int addzero) {

        char[] chars = str.toCharArray();
        StringBuffer hex = new StringBuffer();
        for (int i = 0; i < chars.length; i++) {
            String tmp = Integer.toHexString((int) chars[i]);
            hex.append(addZeroForNum(tmp, addzero));
        }

        return hex.toString();
    }

    /**
     * 16进制转回字符串
     * 
     * @param hex
     * @return
     */
    public static String hex2String(String hex) {

        StringBuilder sb = new StringBuilder();
        StringBuilder temp = new StringBuilder();

        // 49204c6f7665204a617661 split into two characters 49, 20, 4c...
        for (int i = 0; i < hex.length() - 1; i += 2) {

            // grab the hex in pairs
            String output = hex.substring(i, (i + 2));
            // convert hex to decimal
            int decimal = Integer.parseInt(output, 16);
            // convert the decimal to character
            sb.append((char) decimal);

            temp.append(decimal);
        }

        return sb.toString();
    }

    /**
     * 左补0
     * 
     * @param str
     * @param strLength
     * @return
     */
    public static String addZeroForNum(String str, int strLength) {
        int strLen = str.length();
        if (strLen < strLength) {
            while (strLen < strLength) {
                StringBuffer sb = new StringBuffer();
                sb.append("0").append(str);// 左补0
                // sb.append(str).append("0");//右补0
                str = sb.toString();
                strLen = str.length();
            }
        }
        return str;
    }
}
最近下载更多
zhendong  LV7 2022年3月6日
shan454  LV3 2022年1月24日
ITfans  LV19 2020年12月31日
liuxie  LV12 2020年12月14日
KKnight  LV1 2020年6月20日
fanxiaolin84  LV10 2019年12月26日
fzjlyq  LV1 2019年12月17日
樊樊樊樊樊樊阵雨  LV18 2019年9月10日
ly3812  LV17 2019年4月16日
1847731288  LV13 2019年4月15日
最近浏览更多
钱小小  LV3 2023年7月15日
2543317781 2022年11月26日
暂无贡献等级
陨石承影  LV1 2022年10月21日
adimgaoshou  LV10 2022年9月6日
twy525252 2022年5月31日
暂无贡献等级
zhendong  LV7 2022年3月6日
shan454  LV3 2022年1月24日
dongzhan  LV12 2021年12月15日
baotong  LV7 2021年8月2日
tianli3000  LV8 2021年7月22日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友