51单片机c语言16进制数转换10进制数,51单片机C语言里 怎样将16进制 直接化成 10进制...

满意答案

00e27ab806e4881f8254fe7ae8741834.png

xzwyq

2013.10.13

00e27ab806e4881f8254fe7ae8741834.png

采纳率:44%    等级:12

已帮助:16962人

我这儿有一个进制转换的程序,你可以参考一下:

#include

#include

#include

int count=0;

void *tentoBOH(int a,int n)

{

int t,i=0,j,str[50],*p;

char str1[50],*q,temp;

while(a!=0)

{

t=a%n;

if(n==16)

{

if(t<=9&&t>=0)str1[i++]=(char)('0'+t);

if(t>9&&t<16)str1[i++]=(char)('A'-10+t);

}

else

str[i++]=t;

a=a/n;

count++;

}

for(i=0,j=count-1;i

{

t=str[i];

str[i]=str[j];

str[j]=t;

temp=str1[i];

str1[i]=str1[j];

str1[j]=temp;

}

if(n==16)

return q=str1;

else

return p=str;

}

int BOHtoTen(char str[],int n)

{

int len,i,a=0;

char t;

len=(int)strlen(str);

for(i=0;i

{

t=str[i];

str[i]=str[len-1-i];

str[len-1-i]=t;

}

i=0;

while(str[i]!='\0')

{

if(str[i]>='0'&&str[i]<='9')

a+=(str[i]-'0')*(int)pow(n,i);

if(str[i]>='a'&&str[i]<='f')

a+=(str[i]-'a'+10)*(int)pow(n,i);

if(str[i]>='A'&&str[i]<='F')

a+=(str[i]-'A'+10)*(int)pow(n,i);

i++;

}

return a;

}

void main()

{

int a,i,n,m,*p;

char *q,str[20];

printf("请输入一个十进制数a= ");

scanf("%d",&a);

printf("请输入一个进制数n= ");

scanf("%d",&n);

if(n==16)q=tentoBOH(a,n);

else p=tentoBOH(a,n);

printf("输出正整数%d的%d进制为:",a,n);

if(n==16)

for(i=0;i

printf("%c",*(q+i));

else

for(i=0;i

printf("%d",*(p+i));

printf("\n请输入字符串str= ");

scanf("%s",str);

printf("\n请输入该字符串的进制m= ");

scanf("%d",&m);

printf("\n该%d进制数%s转换成十进制数为:%d\n",m,str,BOHtoTen(str,m));

}

02分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值