您的位置:首页 > 编程语言 > C语言/C++

第7周 C语言程序设计(新2版) 练习2-3 字符串转换成等价整型值

2016-05-14 16:33 281 查看
问题及代码:

/*十六进制(hexadecimal)数字组成的字符串(string)
转换(convert)为等价的整型值(integer)*/

#define YES  1
#define NO  0

/*字符串转换成整数的函数*/
int htoi(char s[])
{
int hexdigit,i,inhex,n;
i=0;
if(s[i]=='0')   //跳过可选的0x、0X(skip optional 0x or 0X)
{
i++;
if(s[i]=='x'||s[i]=='X')
i++;
}
n=0;
inhex=YES;   // 假定有效16进制数字 (assume  vaild hexadecimal digit)
for(;inhex==YES;i++)   //i的取值为合法的十六进制数时,inhex取值保持YES
{
if(s[i]>='0'&&s[i]<='9')
hexdigit=s[i]-'0';      //取值0-9
else if(s[i]>='a'&&s[i]<='f')
hexdigit=s[i]-'a'+10;   //s[i]-a取值0-5
else if(s[i]>='A'&&s[i]<='A')
hexdigit=s[i]-'a'+10;
else
inhex=NO;
if(inhex==YES)
n=16*n+hexdigit;   //不是很理解这个算法
}
return n;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: