>>751 シフトは重いと思う。もしかすると
return((c>='A')?(c-'A'+10):(c-'0'));
のほうが軽いかも