关闭

练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的整形值。字符串中允许包含的数字包括:0 ~ 9, a ~ f,A ~ F。

1848人阅读 评论(0) 收藏 举报
分类:

练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的整形值。字符串中允许包含的数字包括:0~9,a~f,A~F。


参考代码:

#include<stdio.h>
#define YES 1
#define NO 0

//htoi: covert hexadecimal string s to interger
int htoi(char s[])
{
    int hexdigit, i, inhex, n;

    i = 0;
    if(s[i] == '0') //skip optional 0x or 0X
    {
        ++i;
        if(s[i] == 'x' || s[i] == 'X')
        {
            ++i;
        }
    }
    n = 0;  //interger value to be returned
    inhex = YES;    //assume valid hexadecimal digit
    for( ; inhex == YES; ++i)
    {
        if(s[i] >= '0' && s[i] <= '9')
            hexdigit = s[i] - '0';
        else if(s[i] >= 'a' && s[i] <= 'f')
            hexdigit = s[i] - 'a' + 10;
        else if(s[i] >= 'A' && s[i] <= 'F')
            hexdigit = s[i] - 'A' + 10;
        else
            inhex = NO;  //not a valid hexadecimal digit
        if(inhex == YES)
            n = 16 * n + hexdigit;
    }
    return n;
}
int main()
{
    char s[] = "0xfff23";
    int n;
    n = htoi(s);
    printf("%d", n);
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12478次
    • 积分:239
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章分类
    文章存档
    阅读排行
    评论排行
    最新评论