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

时间:2023-03-09 17:29:34
练习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 = ;
int sum = ;
while(len){
--len;
if ('a' <= s[len] && s[len] <= 'f'){
sum += (s[len] - 'a' + ) * pow(, i++);
}else if ('A' <= s[len] && s[len] <= 'F'){
sum += (s[len] - 'A' + ) * pow(, i++);
}else if (s[len] == 'X' || s[len] == 'x'){
break;
}else{
sum += (s[len] - '' + ) * pow(, i++);
}
}
return sum; } main()
{
char digital16[] = "0x000a34";
int digital10;
digital10 = htoi(digital16);
printf("16进制是%s, 对应的10进制是%ld。\n", digital16, digital10);
}