导航:首页 > 操作系统 > 单片机c语言16进制转10进制

单片机c语言16进制转10进制

发布时间:2022-11-19 13:03:51

㈠ 51单片机C语言里 怎样将16进制 直接化成 10进制

我这儿有一个进制转换的程序,你可以参考一下:
#include<stdio.h>
#include<math.h>
#include<string.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<=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<count/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;i<len/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;i<count;i++)
printf("%c",*(q+i));
else
for(i=0;i<count;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));
}

㈡ 单片机C51课程设计 16进制转为10进制

转换当然用除10000得到万位再减去万位,同理利用上面的数得到千位,百位十位最后的余数就是个位。
抽取后四位难道不是与下0XFFFF搞定吗
延迟两秒的话可以用每次按键启动或刷新一个定时器来搞定,至于是在中断服务程序内搞还是仅仅做个标记就看情
现在情况是你能显示数字了,那么你就应该能得到输入的数字了吧。(方便起见就不用输入来触发中断了)程序主循环结构是:1、定时扫描输入I/O状态,定时的作用就是用来做防颤处理的,在间隔几毫秒的过程后,如果按键状态还是变化了,才表示实际按动过了。2、上面如果检测到有变化,则将定时器的数字清零,在这个定时器的服务程序里执行将一个标志置位。然后再执行内存中输入数字的变化,和显示的内容。3、判断是否有定时器中断触发的标志,有的话就执行将数转换成BCD码(就是转换成10进制数)的过程,并显示出来。如此就完成了。
至于定时器中断怎样搞,和汇编相比,更简单了,直接初始化定时器的特殊定时器,再在程序里定义中断服务程序就好了。我估计你的输入数字还没能整理,那样的话在上面的第2步里,的第二个操作中先将原数乘16,再加上后来添的数就OK了,显示的话直接对这个数进行处理就好了。

㈢ 51单片机c语言十六进制数转化成十进制数

先转化为二进制数,再转换为十进制数。你的Ox0a是写法上有错误,Ox可能是代表8进制数,或是8421BCD码。具体请查找相应码表。

㈣ c语言16进制与10进制的转换

这个函数的int HtoD(char *a);就是将16进制的数用字符数组保存,把数组首地址作为参数传递给函数,函数返回转换后的10进制整型数值。

详细说明,我写在备注里了,你看以参考。

#include<stdio.h>
#include<string.h>
intHtoD(char*a)//将16进制的数字用字符串保存,并将字符串首地址作为参数传递
{
intnum=0,i;
for(i=0;i<strlen(a);i++)//迭代迭代次数为a数组的长度形参a是指针,初值是指向字符数组的首地址,也就是指向16进制数字的左边第1位
{
//每次迭代取指针指向的地址值进行判断,同时指针不断往右移动
if(*(a+i)>='0'&&*(a+i)<='9')//如果当前位是0~9的数字,那么总数值num累加同时前值*16(因为左边是高位,从高位往低位数,每多1位高位就*16)
num=num*16+*(a+i)-'0';
elseif(*(a+i)>='A'&&*(a+i)<='Z')//如果当前位是大写字母A~Z,转换成10进制数值,再累加
num=num*16+*(a+i)-'A'+10;
elseif(*(a+i)>='a'&&*(a+i)<='z')//如果当前位是小写字母a~z,转换成10进制数值,再累加
num=num*16+*(a+i)-'a'+10;
else
return-1;//表示输入错误的数
}
returnnum;
}
intmain()
{
chara[]="1F";
printf("1F=%d",HtoD(a));//这里我写了简单的调用,打印结果:1F=31
return0;
}

㈤ c语言中16进制转换为十进制

最简单的使用scanf()函数和printf()函数进行格式转换,以16进制格式输入,再以10进制格式输出。

程序代码如下:

#include<stdio.h>

int main()

{

int a=0;

int i=0;

scanf("%x",&a);

printf("%d",a);

return 0;

}

运行结果:

(5)单片机c语言16进制转10进制扩展阅读:

scanf函数与printf函数的用法很像,都是以格式化的形式进行操作,例如上述程序中scanf("%x", &a);就是将输入数据以十六进制格式存储到变量a中。

"%x"是将字符串A23CD以十六进制形式输入a中,如果将"%x"换成为"%d"的话,就是将字符串A23CD以十进制形式输入a中,这显然是错误的,因为将A23CD转换为十进制的时候,无法解析A,CD等字符,所以得出的结果就是错误的。

㈥ 单片机C语言 十六进制转换为十进制

8位的十六进制数temp(0~255)
百位 =temp/100;
temp=temp%100;//取余数
shi=temp/10;
ge=temp%10;

16位的也是一样,只是先除以10000

㈦ 在单片机C语言怎么把16进制数变成10进制发到串口

串口都是用16进制发送的,有两种办法,

  1. 在接收到数据之后你把16进制转为10进制就可以了,比如你发送的十进制10,传送的时是十六进制0x0A,接收到数据后转成10进制 0AH = 10。

  2. 在发送时把数据转换成BCD码,发送十进制10,转成BCD码十六进制就是0x10,接收到数据时显示的就是10H。

BCD码转换网络一下可以。

㈧ 的51单片机中c语言中如何将十六进制数转化为十进制

如果你仅仅是使用转换结果的话,那么赋值语句可以自动转换。比如:
unsigned
char
x,y;
y=0x5a;
x=y;
你输出格式是10进制,那么变量表示的就是十进制数。

㈨ c语言十六进制转十进制方法

可以用<stdlib.h> 中的char*_itoa(intvalue,char*string,intradix);把整型转换为其他进制的字符串参考代码:

int main(){int a=110;char p;_itoa(110,p,16); //16表示16进制,还可以用2、8、10printf("%s",p);return 0;}

GCC,GNU组织开发的开源免费的编译器,MinGW,Windows操作系统下的GCC,Clang,开源的BSD协议的基于LLVM的编译器。

(9)单片机c语言16进制转10进制扩展阅读:

运算符号:

比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。

运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。

阅读全文

与单片机c语言16进制转10进制相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:485
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163