// BCD 码 转 十进制
#define BCD_TO_DECIMAL(x)   ((((x) & 0xf0) >> 4) * 10 + ((x) & 0x0f))
// 十进制 转 BCD 码
#define DECIMAL_TO_BCD(x)   ((((x) / 10) << 4) + ((x) % 10))
 * \brief 十六进制转bcd 用于把时间转换成底板的时间格式
 * \param[int] hex 输入十六进制
 * \return unsigned char 输出bcd码
unsigned char hex_to_bcd(unsigned char hex)
	unsigned char bcd;
	bcd=(hex/10*16)+(hex%10);
	return bcd;
 * \brief bcd时间格式转16进制格式 用于把底板的时间转换成16进制
 * \param[int] bcd 输入bcd码
 * \return unsigned char 输出16进制
unsigned char bcd_to_hex(unsigned char bcd) 
	unsigned char hex;
	hex = (bcd/16*10)+(bcd % 16);
	return hex;

两者各有优劣:

  1. 宏函数速度更快;
  2. 宏函数资源消耗更少;
  3. 宏函数不支持运算式代入, 会出现错误;
  4. 宏函数占用的代码量更大, 如果调用的地方很多, 会导致比使用函数应用大小较大;
  1. 啥是 BCD 码?
满意答案baotaoasdf12013.06.06采纳率:46%等级:13已帮助:12723人对于BCD码每四位代表一个十进制数字0-9,可以将BCD码化为十进制,然后再将十进制化为十六进制。下面是以8421BCD码为例编写的vc++6.0程序代码:#include #include #include using namespace std;int ConvertStringToInt... 如果要表示为十六进制,则转换为10进制数,前面加0x符号;(十六进制表示)(hex_to_dec) 如果要表示为十进制,则先转换为10进制数,前面加0x符号,再把加上符号的十六进制为十进制数;(十进制表示)(两次十六进制和十进制的转换BCD2HEX 如果这个数是16进制表示的,把0x符号去掉,当成10进制数直接转换为16进制数(bcd_to_hex16) 如果这个数是十进制表示的,先把这个数转换为16进制数,再把0x符号去掉,当成十进制数, /////////////////////////////////////////////////////////////功能:十进制十六进制////输入:int dec 待转换的十进制数据// int length 转换后的十六进制数据长度////输出:unsigned char *hex 转换后的十六进制数据////返回:0 success////思路:原理同十六进制十进制////////... //BCD转换成16进制数(例如:0x16转换成16)---读时钟使用(例如:读的秒=26代表:0x26,为BCD码,需要转换成十进制:38) uint8_t BCDtoHEX(uint8_t BCD) uint8_t tempData; tempData = ... unsigned int hexresult; //待化的16进制数; unsigned char bcdresult[5]; //化后的bcd码存入数组; void hex2bcd() bcdresult[0]=hexresult%10;//个位 bcdresult[0]=(hexresult/10)%10;//十位 bcdresult[0]=(hexresult/10 十六进制十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。1、BCD码与十进制数的转换BCD码与十进制数的转换关系很直观,相互转换也很简单,将十进制数75.4转换BCD码:... 在实际应用中需要转换超过255的十六进制转换BCD码,如0x123456,但是我找了半天没找到解决问题的方式,找到了也有很多问题,所以自己在理解这些代码后自己写一个。 先来一个我之前找到的一个版本,这个版本的问题在于,超过99后,转换BCD码就乱了,出现0->99->0->99->0->55->100->199->100->199->100->155->200…以此类推的这样的循环。后面看代码发现这个限制,0...