如何把16进制数转化为10进制,c语言编写

 我来答
碧海风云

2017-07-27 · 碧海风的秘密小据点!
碧海风云
采纳数:909 获赞数:10281

向TA提问 私信TA
展开全部

16进制数转10进制数原理:

某16进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y。

Y = Xn×16^0 + Xn-1×16^1 + Xn-2×16^2 + …… + X1×16^n-1。

#include <stdio.h>
#include <math.h>
#include <string.h>

/* 任意进制数转十进制数 */
/* char *value : 其他进制数 */
/* int *result : 转换后的十进制数 */
/* int radix : 待转换的进制*/
void others2Decimal (char *value, int *result, int radix) { 
int digit,i,j;

*result = 0;
for (i=strlen(value)-1,j=0; i>=0; i--,j++) {
if (value[i]>='0' && value[i]<='9')
digit = value[i]-'0';
if (value[i]>='a' && value[i]<='z')
digit = value[i]-'a'+10;
if (value[i]>='A' && value[i]<='Z')
digit = value[i]-'A'+10;
*result += digit*pow(radix,j);
}
}

int main (void) {
char *value;
int radix=16,result;

printf ("请输入16进制数:");
    gets (value);
    putchar ('\n');
    puts ("================================================================\n");
    
    printf ("10进制转换结果:"); 
others2Decimal (value,&result,radix);
printf ("%d\n",result);
putchar ('\n');

getch (); /*屏幕暂留*/
return 0;
}

运行结果

刘老师法律在线
高能答主

2017-07-27 · 为各位题主提供贴心的法律援助
刘老师法律在线
采纳数:7701 获赞数:90237

向TA提问 私信TA
展开全部
可以用<stdlib.h> 中的char*_itoa(intvalue,char*string,intradix);把整型转换为其他进制的字符串参考代码:
#include<stdio.h>
#include<stdlib.h> //包含_itoa的头文件

int main()
{
int a=110;
char p[20];
_itoa(110,p,16); //16表示16进制,还可以用2、8、10
printf("%s",p);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
物理公司的
2017-07-27 · TA获得超过5695个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1353万
展开全部
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
    char *Hex = "27c";
    int i, Dec = 0, t = 0;
    for (i = 0; i < strlen(Hex); i++){
        switch (Hex[i]){
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
        case '9':
            t = (int)Hex[i] - 48;
            break;
        case 'a':
        case 'b':
        case 'c':
        case 'd':
        case 'e':
        case 'f':
            t = (int)Hex[i] - 87;
        default:
            puts("Error");
        }
        Dec += t * pow(16, strlen(Hex) - i - 1);
    }
    printf ("%d", Dec);
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式