练习2-3:十六进制数字字符串转换为等价整型值,字符串允许包含的数字包括:0~9、a~f、A~F、x、X(C程序设计语言 第2版)

#include <stdio.h>
#include <string.h>
#include <math.h>
int htoi(char s[]){
    unsigned int len = strlen(s);
    unsigned int i = 0;
    int sum = 0;
    while(len){
        --len;
        if ('a' <= s[len] && s[len] <= 'f'){
            sum += (s[len] - 'a' + 10) * pow(16, i++);
        }else if ('A' <= s[len] && s[len] <= 'F'){
            sum += (s[len] - 'A' + 10) * pow(16, i++);
        }else if (s[len] == 'X' || s[len] == 'x'){
            break;
        }else{
            sum += (s[len] - '0' + 0) * pow(16, i++);
        }
    }
    return sum;

}

main()
{
    char digital16[] = "0x000a34";
    int digital10;
    digital10 = htoi(digital16);
    printf("16进制是%s, 对应的10进制是%ld。
", digital16, digital10);
}
View Code
原文地址:https://www.cnblogs.com/yangshuo/p/3324031.html