code: public static byte[] decodeStringToBytes(String hex) {
      hex = decompressHexString(hex);
      int stringLength = hex.length();
      byte[] b = new byte[stringLength / 2];
      for (int i = 0, j = 0; i < stringLength; i += 2, j++) {
        int high = charToNibble(hex.charAt(i));
        int low = charToNibble(hex.charAt(i + 1));
        b[j] = (byte) ((high << 4) | low);
      }
      return b;
    }
docs: Takes a string encoded in hex (00-FF), two chars per byte, and returns an array of bytes.
  array.length will be hex.length/2 after hex has been run through {@link #decompressHexString}