It's hard to believe that somebody added the ability to deal with colons, but not upper case. On the other hand, maybe strtoul() is to blame for not understanding uppercase HEX digits. In which case, somebody ought to look into it. What do the standards say?