技术文档

单片机 十进制转十六进制 C语言的BCD 码转十进制(十六进制HEX)程序

小编 2024-11-24 技术文档 23 0

C语言的BCD 码转十进制(十六进制HEX)程序

说明:本程序分别列举了单字节BCD码转换为char型数据;2字节BCD码转换为int型数据;4字节bcd码转换为long int型数据的的方法。

unsigned char ucBCDdata[10] = {0x11,0x22,0x33,0x44,0x55,0x55,0x66,0x77};

unsigned char ucHEXdata11 = 0,ucHEXdata[10] = {0};

unsigned int uiHEXdata = 0,uiHEXdata11 = 0;

unsigned long int ulHEXdata = 0;

//1、现实中十六进制数和十进制数不可以直接相加,如果是在电脑上的话是可以的,因为不管

//何种进制数在电脑上都是以二进制的形式表示的,所以在电脑编写程序时是可以相加的。

//C语言程序中,十进制和十六进制实际是互通的,

//单字节BCD码转十进制

//高半字节=BCD码字节除16的商,低半字节=BCD码字节除16的余数

ucHEXdata[0] = (ucBCDdata[0]>>4)*10 +(0xf & ucBCDdata[0]);

ucHEXdata11 = ucHEXdata[0];

//2字节BCD码转换为整数

//先将2个字节的BCD码分别转换为十进制,然后高字节*100+低字节=整数

ucHEXdata[0] = (ucBCDdata[0]>>4)*10 +(0xf & ucBCDdata[0]);

ucHEXdata[1] = (ucBCDdata[1]>>4)*10 +(0xf & ucBCDdata[1]);

uiHEXdata = ucHEXdata[1]*100 + ucHEXdata[0];

//4字节BCD码转换为整数

//先将4个字节的BCD码分别转换为十进制,按照十进制数的整合方式整合为长整形

ucHEXdata[0] = (ucBCDdata[0]>>4)*10 +(0xf & ucBCDdata[0]);

ucHEXdata[1] = (ucBCDdata[1]>>4)*10 +(0xf & ucBCDdata[1]);

ucHEXdata[2] = (ucBCDdata[2]>>4)*10 +(0xf & ucBCDdata[2]);

ucHEXdata[3] = (ucBCDdata[3]>>4)*10 +(0xf & ucBCDdata[3]);

ulHEXdata = ((unsigned long int)ucHEXdata[3]*1000000)

+((unsigned long int)ucHEXdata[2]*10000)

+((unsigned long int)ucHEXdata[1]*100) + ucHEXdata[0];

单片机C语言开发离不开它--秒懂二进制和十六进制

单片机C语言开发离不开它--秒懂二进制和十六进制

作为单片机爱好者,入门学习单片机编程一定要学会进制的基本概念,常见的有(二进制、八进制、十进制、十六进制),今天于晓超带大家入门一下单片机C语言编程的二进制和十六进制(技术文章阅读量惨淡,希望大家能够点赞收藏加转发,感谢)。

进制顾名思义,进位计数制是人们定义的进位技术方法,这句话可能比较难理解,以十进制为例,逢十进一,(1、2、3....10--1、2、3....10)由此大家应该也可以理解二进制和十六进制了,二进制就是逢二进一,十六进制逢十六进一,记住这是进位运算的方法。

二进制的应用

二进制在单片机开发过程中必不可少,可以把他理解为高低电平

如图,在单片机时序图中常常这样表示。0和1代表着信息,那么很多的0和1组成的就是一串信息,0和1的不同排列所承载的信息也不同,但是在实际应用过程中二进制承载的信息过多时不易使用和记忆,因此在单片机C语言开发中常常将一串二进制用十六进制来替代。

十六进制的应用

十六进制满十六进一,那么大于10的用什么来表示尼?在十六进制中大于10的数用ABCD等,英文大写来代替,0X01、0XAA这都是16进制,对十六进制和二进制进行相互转换是单片机C语言开发中必备的技能。

进制转换

二进制和十六进制的转换,在开发过程中可以借助计算机自带的计算器进行转换,但是自己熟练掌握相互转换会在开发过程中,节约很多时间而且有利于自身的理解,如何进行相互转换如图所示!

相关问答

51 单片机 16 进制转 ascii码方法?

这程序的功能就是把一字节十六进制数的低4位转换为一个ASCII码。例如0x0E转换为'E'、0x08转换为'8'。我估计你就是对内码不太熟悉吧。你翻一下ASCII码...

我想利用 单片机 通过串口发送几个16 进制 数FF 10 11 01 DD求高手指点,不胜感激?

单片机通过串口发送几个16进制数FF101101DD,程序如下:voidSend(unsignedcharTx_Data)//向串口发字符{SBUF=Tx_Data;while(...

单片机 中断如何设置 十六进制 ?

在单片机中,设置中断需要编写中断服务程序,并设置相应的中断向量地址。首先,通过编程将中断控制寄存器设置为使能状态,然后配置中断优先级和触发条件。接着...

单片机 汇编一个将2位16 进制 数转换为ASCII子程序?

51单片机接收到的都是ASCII码,你可以当16进制,也可以当2进制来使用。再单片机内部运算的时候不用转换;但是某些场合,比如你把得到的数据发送到上位机去,想在...

C语言 单片机 编程,如何将串口接收到的 十六进制 字符转存到数组中?

接收数组也可以定义成不定长度的,没有想要寻找你要的字符串可以用strstr函数,如果想清零可以用memset函数全部赋值为0接收数组也可以定义成不定长度的,没有...

单片机 中ac是什么意思?

算时低半字节相加是否产生进位。例如,25H+72H=97H,AC=0,因为5H+2H=7H,不产生低半字...例如,25H+72H=97H,AC=0,因为5H+2H=7H,不产生低半字节进位;25H...

单片机 运行后在串口调试助手上看到重复的一组16 进制 数 - 1...

首先看你的发送的是什么:unsignedchardat,字符型的变量,也就是说你发送过去的变量是char型的,再看你要显示什么:“串口助手上看到一组16进制数”好...

单片机 0到9怎么表示?

在单片机程序中,数字通常有二进制,十进制和十六进制三种表示法,以数字9为例:二进制写成00001001B,B就是二进制的意思,注意,这个字母不能缺少!十进制写...在...

单片机 数字后面的H表示什么?

H表示十六进制。1.在数电领域中,单片机常常使用十六进制来表示数值,H就是十六进制的标志。例如,数字0x10H表示十六进制的10,相当于十进制的16。2.十六进制...

单片机 里边的0x40是什么意思?若用 十六进制 转换,并不是想要的效果,好像是0?

这个0x40本身就是十六进制的,以0x开头的就表示这个数字是十六进制的,等同于以H结尾的,比如0x40=40H,它们是一样的,知道了么?这个0x40本身就是十六进制的,以0x...

猜你喜欢