今天给各位分享单片机十六进制转十进制c语言的知识,其中也会对单片机十六进制转十进制c语言编程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、51单片机c语言十六进制数转化成十进制数2、的51单片机中c语言中如何将十六进制数转化为十进制3、51单片机C语言里 怎样将16进制 直接化成 10进制
51单片机c语言十六进制数转化成十进制数
先转化为二进制数,再转换为十进制数。你的Ox0a是写法上有错误,Ox可能是代表8进制数,或是8421BCD码。具体请查找相应码表。
的51单片机中c语言中如何将十六进制数转化为十进制
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们
用a,b,c,d,e,f这五个字母来分别表示10,11,12,13,14,15
。字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第n(n从0开始)位上,如果是是数
x
(x
大于等于0,并且x小于等于
15,即:f)表示的大小为
x
*
16的n次方。
假设有一个十六进数
2af5,
那么如何换算成10进制呢?
用竖式计算:
2af5换算成10进制:
第0位:
5
*
16
=
5
第1位:
f
*
16
1
=
240
第2位:
a
*
16
2
=
2560
第3位:
2
*
16
3
=
8192
+
————————————-
10997
直接计算就是:
5
*
16
+
f
*
16
1
+
a
*
16
2
+
2
*
16
3
=
10997
(别忘了,在上面的计算中,a表示10,而f表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数
1234
为什么是
一千二百三十四?你尽可以给他这么一个算式:
1234
=
1
*
10
3
+
2
*
10
2
+
3
*
10
1
+
4
*
10
51单片机C语言里 怎样将16进制 直接化成 10进制
我这儿有一个进制转换的程序,你可以参考一下:
#includestdio.h
#includemath.h
#includestring.h
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=9t=0)str1[i++]=(char)(‘0’+t);
if(t9t16)str1[i++]=(char)(‘A’-10+t);
}
else
str[i++]=t;
a=a/n;
count++;
}
for(i=0,j=count-1;icount/2;i++,j–)
{
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;ilen/2;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;icount;i++)
printf(“%c”,*(q+i));
else
for(i=0;icount;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));
}
关于单片机十六进制转十进制c语言和单片机十六进制转十进制c语言编程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。