winnie 发表于 2009-3-7 22:50:32

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


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]
查看完整版本: 看看国人的思维与老外的区别!!! (hex2bcd)