public static String base16ToStr(String bytes) {

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

        ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);
        // 将每2位16进制整数组装成一个字节
        for (int i = 0; i < bytes.length(); i += 2)
            baos.write((HEX.indexOf(bytes.charAt(i)) << 4 | HEX.indexOf(bytes.charAt(i + 1))));

        return new String(baos.toByteArray());
    }