public static String strToBase16(String str) {

        if (StringUtil.isNullOrEmpty(str))
            return "";

        // 根据默认编码获取字节数组
        byte[] bytes = str.getBytes();
        StringBuilder sb = new StringBuilder(bytes.length * 2);
        // 将字节数组中每个字节拆解成2位16进制整数
        for (int i = 0; i < bytes.length; i++) {
            sb.append(HEX.charAt((bytes[i] & 0xf0) >> 4));
            sb.append(HEX.charAt((bytes[i] & 0x0f) >> 0));
        }

        return sb.toString();
    }