internal static int HexDigit(char c){
if (c >= '0' && c <= '9') return ((int)c) - ((int)'0');
if (c >= 'A' && c <= 'F') return 10 + ((int)c) - ((int)'A');
if (c >= 'a' && c <= 'f') return 10 + ((int)c) - ((int)'a');
return -1;
}