ruilin215 发表于 2013-1-26 14:05:22

C/C++: 十六进制转10进制源码

int hex_char_value(char c){if(c >= '0' && c <= '9')return c - '0';else if(c >= 'a' && c <= 'f')return (c - 'a' + 10);else if(c >= 'A' && c <= 'F')return (c - 'A' + 10);assert(0);return 0;}int hex_to_decimal(const char* szHex, int len){int result = 0;for(int i = 0; i < len; i++){result += (int)pow((float)16, (int)len-i-1) * hex_char_value(szHex);}return result;}
写完以上代码后,又突然想到可以用 sscanf() 实现同样的功能:
int x;
sscanf("abc", "%x", x);
//x = 2748
页: [1]
查看完整版本: C/C++: 十六进制转10进制源码