private static int fromHex(final char c) {
    if (c < '0') {
      throw new IllegalStateException(
          "Invalid percent-encoded string: bad character '" + c + "' in "
              + "escape sequence.");
    }
    if (c <= '9') {
      return (c - '0');
    }

    if (c < 'A') {
      throw new IllegalStateException(
          "Invalid percent-encoded string: bad character '" + c + "' in "
              + "escape sequence.");
    }
    if (c <= 'F') {
      return (c - 'A') + 10;
    }

    if (c < 'a') {
      throw new IllegalStateException(
          "Invalid percent-encoded string: bad character '" + c + "' in "
              + "escape sequence.");
    }
    if (c <= 'f') {
      return (c - 'a') + 10;
    }

    throw new IllegalStateException(
        "Invalid percent-encoded string: bad character '" + c + "' in "
            + "escape sequence.");
  }
Converts a hex character (0-9A-Fa-f) into its corresponding quad value.

@param c the hex character
@return the quad value
src/main/java/com/creactiviti/piper/taskhandler/s3/AmazonS3URI.java