public static int FromHex (char digit)
{
if ('0' <= digit && digit <= '9') {
return (int) (digit - '0');
}
if ('a' <= digit && digit <= 'f')
return (int) (digit - 'a' + 10);
if ('A' <= digit && digit <= 'F')
return (int) (digit - 'A' + 10);
throw new ArgumentException ("digit");
}