public static int convertHexDigit(char c) {
        int d = ((c & 0x1f) + ((c >> 6) * 0x19) - 0x10);
        if (d < 0 || d > 15) {
            throw new NumberFormatException("!hex " + c);
        }
        return d;
    }
@param c An ASCII encoded character 0-9 a-f A-F
@return The byte value of the character 0-16.
src/main/java/spark/utils/urldecoding/TypeUtil.java