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

2020-01-21 21:39发布

本帖最后由 牛东 于 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个字节最大值表示
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。