C语言实现十六进制转换为十进制的方法 |
您所在的位置:网站首页 › 2A16进制转十进制 › C语言实现十六进制转换为十进制的方法 |
这篇文章主要为大家详细介绍了C语言实现十六进制转换为十进制的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下 题目描述输入一个十六进制数字串,将其转换成为对应的整数并输出转换结果,遇到非十六进制数字或字符串结束符('\0')结束转换。 注意: 输入的字符串的长度不会超过100;转换后的值不会超出int类型的范围。 1.测试输入:55 //程序的输入不会有十六进制的前缀 预期输出:85 2.测试输入:f1r2 //程序的输入不会有十六进制的前缀 预期输出:241 补充知识十六进制转换为十进制的做法: 算法分析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include #include void conversion(char str[]){ /********** Begin **********/ int i=0,j=0,num=0,sum=0; int len=strlen(str);
while(str[i]!='\0') { if(str[i]>='0'&&str[i]='a'&&str[i]='A'&&str[i] /********** Begin **********/ int i = 0, j=0,num = 0, sum = 0,len=0; //int len = strlen(str);//这种方法会将非16进制数记录在内 while ((str[i] >= 'a' && str[i] = 'A' && str[i] = '0' && str[i] //字符转数字 if (str[i] >= '0' && str[i] = 'a' && str[i] = 'A' && str[i] int sum = 0; while(isspace(*str)) { str++; } //此时 空格处理结束 int index = 1; if(*str=='-' || *str=='+') { if(*str=='-') { index *= -1; } else { index = 1; } str++; }
if((*str=='0') && (*(str+1)=='x'|| *(str+1)=='X')) { str+=2; } else { return INT_MAX; }
while(isxdigit(*str)) { if(isdigit(*str)) { sum = sum*16 + (*str-'0'); } else if(islower(*str)) { sum = sum*16 + (*str-'a'+10); } else { sum = sum*16 + (*str-'A'+10); } str++; } if(*str == '\0') return sum * index; return INT_MAX; } int main() { printf("%d\n", Get_0x("0x123ABcW")); printf("%d\n", Get_0x("0X123ABc")); printf("%d\n", Get_0x(" 0x123ABc")); printf("%d\n", Get_0x("+0x123ABc")); printf("%d\n", Get_0x("-0x123ABc")); printf("%d\n", Get_0x(" +0x123ABc")); printf("%d\n", Get_0x(" -0x123ABc")); return 0; } 调试结果 到此这篇关于C语言实现十六进制转换为十进制的方法详解的文章就介绍到这了,希望对你有所帮助。 来源:https://www.weidianyuedu.com |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |