英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3462|回复: 0
打印 上一主题 下一主题

看看国人的思维与老外的区别!!! (hex2bcd)

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-7 22:50:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
hex 转换为  bcd

首先先看国人编的: (其中之一)
/********** HEX转BCD******/
/***hex_data(<0xff,>0)****/
unsigned int HEX2BCD(unsigned char hex_data)
{
     unsigned int bcd_data;
     unsigned char temp;
     temp        =hex_data%100;
     bcd_data  =((unsigned int)hex_data)/100<<8;
     bcd_data  =bcd_data|temp/10<<4;
     bcd_data  =bcd_data|temp%10;
return bcd_data;
}


接着看老外的思维: (也是其中之一)

#define hex2bcd( x ) ({ int p = 0, c = 0; for (int i = x; i!=0; i=i/10) { p |= (i % 10)<<c; c+=4; } p; })

老外的优势: 可以转换的范围可以达到int,不会只局限在0~0xff
                 另外,简练!


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 02:53 , Processed in 0.051996 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表