из
http://golang.org/src/pkg/fmt/scan.go 799 // hexDigit returns the value of the hexadecimal digit
800 func (s *ss) hexDigit(digit int) int {
801 switch digit {
802 case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
803 return digit - '0'
804 case 'a', 'b', 'c', 'd', 'e', 'f':
805 return 10 + digit - 'a'
806 case 'A', 'B', 'C', 'D', 'E', 'F':
807 return 10 + digit - 'A'
808 }
809 s.errorString("Scan: illegal hex digit")
810 return 0
811 }
сырцы исходного С Кена дабудетмониторв2колонки Томпсона где та
так что мона предположить что на Ся это как то так :
int hexdigit(int digit){
switch(digit){
case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
case '8': case '9': return digit - '0';
case 'a': case 'b': case 'c': case 'd':
case 'e': case 'f': return 10 + digit - 'a';
case 'A': case 'B': case 'C': case 'D':
case 'E': case 'F': return 10 + digit - 'A';
}
return -1;
} // очевидное?!