搜索
bottom↓
回复: 6

请教十六进制数值转换成组合BCD码,看不懂啊!!

[复制链接]

出0入0汤圆

发表于 2014-11-24 15:39:04 | 显示全部楼层 |阅读模式
本帖最后由 牛东 于 2014-11-24 15:42 编辑

/*************************************************

                把十六进制数值转换成组合BCD码函数

*************************************************/
void number_to_BCD4(const unsigned char *p_ucNumber,unsigned char *p_ucBCD_bit4)
{
        unsigned long ulNumberTemp=0; //4个字节
        unsigned char ucTemp=0;//单字节

        ulNumberTemp=p_ucNumber[3]; //把4个字节的数值合并成一个32位long类型数据,高位在数组下标大的方向,低位在数组下标小的方向
        ulNumberTemp=ulNumberTemp<<8;
        ulNumberTemp=ulNumberTemp+p_ucNumber[2];
        ulNumberTemp=ulNumberTemp<<8;
        ulNumberTemp=ulNumberTemp+p_ucNumber[1];
        ulNumberTemp=ulNumberTemp<<8;                         
        ulNumberTemp=ulNumberTemp+p_ucNumber[0];
       
        p_ucBCD_bit4[3]=ulNumberTemp%100000000/10000000; //4个字节最大值表示:十进制为4294967295,十六进制为ffffffff,
        p_ucBCD_bit4[3]=p_ucBCD_bit4[3]<<4;         //前半4位存第8位组合BCD码  
        ucTemp=ulNumberTemp%10000000/1000000;
        p_ucBCD_bit4[3]=p_ucBCD_bit4[3]+ucTemp; //后半4位存第7位组合BCD码
       
        p_ucBCD_bit4[2]=ulNumberTemp%1000000/100000;
        p_ucBCD_bit4[2]=p_ucBCD_bit4[2]<<4;         //前半4位存第6位组合BCD码
        ucTemp=ulNumberTemp%100000/10000;
        p_ucBCD_bit4[2]=p_ucBCD_bit4[2]+ucTemp; //后半4位存第5位组合BCD码
       
        p_ucBCD_bit4[1]=ulNumberTemp%10000/1000;
        p_ucBCD_bit4[1]=p_ucBCD_bit4[1]<<4;            //前半4位存第4位组合BCD码
        ucTemp=ulNumberTemp%1000/100;
        p_ucBCD_bit4[1]=p_ucBCD_bit4[1]+ucTemp; //后半4位存第3位组合BCD码
       
        p_ucBCD_bit4[0]=ulNumberTemp%100/10;
        p_ucBCD_bit4[0]=p_ucBCD_bit4[0]<<4;     //前半4位存第2位组合BCD码
        ucTemp=ulNumberTemp%10;
        p_ucBCD_bit4[0]=p_ucBCD_bit4[0]+ucTemp; //后半4位存第1位组合BCD码
}


这句怎么解释啊!!!求教!!!
  p_ucBCD_bit4[3]=ulNumberTemp%100000000/10000000; //4个字节最大值表示

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2014-11-24 15:42:00 | 显示全部楼层
知道进制转换的规则就好了

出0入0汤圆

 楼主| 发表于 2014-11-24 15:43:09 | 显示全部楼层
霸气侧漏 发表于 2014-11-24 15:42
知道进制转换的规则就好了

这句怎么解释啊!!!求教!!!
  p_ucBCD_bit4[3]=ulNumberTemp%100000000/10000000; //4个字节最大值表示

出0入0汤圆

发表于 2014-11-24 16:28:21 | 显示全部楼层
这程序怎么会这么麻烦?不是分分钟的事情?

出0入0汤圆

发表于 2014-11-24 19:17:00 | 显示全部楼层
做数字钟吗?
那就无须这么麻烦
做数字钟时单片机内部的ram用不完
我是6位的
那就一位用一个ram单元
根本不需要去做什么16进制到bcd的转换
这样搞不是自己跟自己过不去嘛

出0入0汤圆

 楼主| 发表于 2014-11-25 08:19:55 | 显示全部楼层
lxa0 发表于 2014-11-24 19:17
做数字钟吗?
那就无须这么麻烦
做数字钟时单片机内部的ram用不完

兄弟,是吴坚鸿的程序,正在学习中!!!

出0入0汤圆

发表于 2014-11-25 19:19:46 | 显示全部楼层
你管他是谁的程序呢
写代码是越简单越好
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 10:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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