编写函数htoi(s), 把由十六进制数字组成的字符串(包含可选的前缀0X和0x),转化为与之等价的整数值, 字符串中包含的字符可以是0 - 9,A - F,a - f
// 把由十六进制数字组成的字符串(包含可选的前缀0X和0x),转化为与之等价的整数值,字符串中包含的字符可以是0-9,A-F,a-f
int htoi(const char *s) {int dec = 0, len, i, n = 0, j = 0, ji, k;len = strlen(s);int b = 0; // 十六进制数字在字符串中的起始位置if (s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) {b = 2;}for(i = len - 1; i >= b; i--){//处理不同字符串if(s[i] >= '0' && s[i] <= '9'){n = s[i] - '0';}else if(s[i] >= 'a' && s[i] <= 'f'){n = s[i] - 'a' + 10;}else if(s[i] >= 'A' && s[i] <= 'F'){n = s[i] - 'A' + 10;}ji = 1;if(j == 0){ji = 1;}else{k = j;while(k > 0){ji = ji * 16;k--;}}j++;dec = dec + ji * n;}return dec;
}