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[i]); } return result; }
写完以上代码后,又突然想到可以用 sscanf() 实现同样的功能:
int x;
sscanf("abc", "%x", x);
//x = 2748
本文介绍了两种将十六进制字符串转换为十进制整数的方法:一种是通过自定义函数逐字符解析并计算;另一种是使用C标准库函数sscanf直接完成转换。自定义函数通过遍历输入字符串,并根据字符确定其对应的数值来实现转换。
325

被折叠的 条评论
为什么被折叠?



