C程序设计语言 (第二版) 练习2-3
练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。
注意:代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。
IDE工具:Visual Studio 2010
代码块:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int power(int base, int n){
int sum = 1;
for(int i = 0; i < n; i++){
sum *= base;
}
return sum;
}
int htoi(char *s){
int len = strlen(s);
int bit = len - 3;
int sum = 0;
int num;
for(int i = 2; i < len; i++, bit--){
if(s[i] >= 'a' && s[i] <= 'f'){
num = s[i] - 87;
}
else if(s[i] >= 'A' && s[i] <= 'F'){
num = s[i] - 55;
}
else{
num = s[i] - '0';
}
sum += num * power(16, bit);
}
return sum;
}
int main(){
char s[] = "0x2AF5";
printf("%d\n", htoi(s));
system("pause");
return 0;
}