String hexToString(String hh) {
        hh = hh.substring(1, hh.length() - 1).toUpperCase();
        StringBuilder sb = new StringBuilder();
        if (hh.charAt(0) == 'F'
                && hh.charAt(1) == 'E'
                && hh.charAt(2) == 'F'
                && hh.charAt(3) == 'F') {
            byte b[] = new byte[4];
            for (int i = 1; i < hh.length() / 4; i++) {
                b[0] = (byte) hh.charAt(i * 4);
                b[1] = (byte) hh.charAt(i * 4 + 1);
                b[2] = (byte) hh.charAt(i * 4 + 2);
                b[3] = (byte) hh.charAt(i * 4 + 3);
                sb.append((char) Integer.parseInt(new String(b), 16));
            }
        } else {
            byte b[] = new byte[2];
            for (int i = 0; i < hh.length() / 2; i++) {
                try {
                    b[0] = (byte) hh.charAt(i * 2);
                    b[1] = (byte) hh.charAt(i * 2 + 1);
                    sb.append((char) Short.parseShort(new String(b), 16));
                }
                catch (Exception e) {
                }
            }
        }

        return sb.toString();
    }