将十六进制转换为十进制

将十六进制转换为十进制将十六进制转换为十进制 16 进制转 10 进制

大家好,欢迎来到IT知识分享网。

问题描述:

输入一个十六进制数,输出相应的十进制数。

示例:

输入:a11

输出:2577

方法:将十六进制存储到字符串数组中,依次遍历每个字符,根据进制转换公式计算出相应的十进制。a或A的十进制为10,所以要用字符的ASCII码减去对应的数之后才用来计算。如:’a’-87=10,’b’-87=11…‘A’-55=10,‘B’-55=11;

进制转换公式:举例 :a11=10(a)*16^2+1*16^1+1*16^0=2577。用当前的数乘以基数的次方,16进制,所以基数是16,次方是位置-1。位置从右往左数。

代码:

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> #include<math.h> int caculate(char str[],int n) { int i, num = 0; for (i = 0; str[i] != '\0'; i++) { if (str[i] >= 'a' && str[i] <= 'z') {//判断是大写还是小写,要通过ASCII值计算 num += (str[i] - 87) * (pow(16, --n));//小写要减87,然后乘以基数的次方, //次方是位置-1 } else if (str[i] >= 'A' && str[i] <= 'Z') { num += (str[i] - 55) * pow(16, --n);//大写要减55 } else { num += (str[i]-48) * pow(16, --n);//数字,但还是字符形式的数字,所以要减48, //ASCII中48为‘0’ } } return num; } int main() { char str[32]; printf("请输入16进制:"); gets(str); printf("该16进制的十进制数为:%d\n", caculate(str, strlen(str)));//srtlen(str)计算长度, //为16的次方做准备 return 0; } 

运行结果截图:

将十六进制转换为十进制

16进制用大小写都可以,上面代码中都有相应的判断。

将十六进制转换为十进制

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149423.html

(0)
上一篇 2025-03-24 12:25
下一篇 2025-03-24 12:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信