C语言学习笔记―08-02

练习2-3,编写函数htoi(s),把十六进制的字符串转换为整数值。


#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ctype.h> //测试用函数
int htoi(char s[]); // 函数原型
main()
{
    printf("%d\n", htoi("0xffff"));
}
int htoi(char s[])
{
    int c = 0;
    int i = strlen(s) - 1;
    int copy_i = i;
    int di = 0;
    while (s[i] != 'x' && di <= copy_i)
    {
            if (isdigit(s[i]))
                c += (int)(s[i]) * pow(16, di);
            else
                c += ((tolower((int)(s[i])) - 87) * pow(16, di)); \\发现不是数字,转换为16进制值
            i--; \\是i减减
            di++;
    }
    return c;
}


用gcc编译时要在末尾加上 -lm 选项,链接数学库,否则pow函数会报错。


你可能感兴趣的:(十六进制,C语言学习)