查看: 1319|回复: 0
打印 上一主题 下一主题

很多行语句

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-22 08:30:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
多谢各位,昨晚我也搞掂了,也是有很多行语句呀
void clqo()//行列奇偶位计算 并将五个字节的十六进制转为卡的9个头及奇偶位共64位即 八个字节的十六进制数据
{
        uchar kk;
        for(kk = 0;kk < 5;kk++)//将五个字节的十六进制分开半个字节
        {
                Buf_RF_Data[kk * 2 + 0] = ID_Code[kk] >> 4;
                Buf_RF_Data[kk * 2 + 1] = ID_Code[kk] & 0x0F;        
        }               
        for(kk = 0;kk < 10;kk++)//计算每半个字节的奇偶位
        {
                Buf_RF_Data[kk] &= 0x0F; //先屏蔽高4位
                if(((Buf_RF_Data[kk] >> 3) + (Buf_RF_Data[kk] >> 2) + (Buf_RF_Data[kk] >> 1) + (Buf_RF_Data[kk] & 0x01)) % 2)
                {
                        Buf_RF_Data[kk] <<= 1;
                        Buf_RF_Data[kk] |= 1;
                }
                else //为偶数个 1 则补 0
                {
                        Buf_RF_Data[kk] <<= 1;
                }
        }
        for(kk = 4;kk > 0;kk--)//列奇偶位
        {
                Buf_RF_Data[kk] &= 0x1F; //先屏蔽高3位
                if(((Buf_RF_Data[0] >> kk) + (Buf_RF_Data[1] >> kk) + (Buf_RF_Data[2] >> kk) + (Buf_RF_Data[3] >> kk) + (Buf_RF_Data[4] >> kk)
                + (Buf_RF_Data[5] >> kk) + (Buf_RF_Data[6] >> kk) + (Buf_RF_Data[7] >> kk) + (Buf_RF_Data[8] >> kk) + (Buf_RF_Data[9] >> kk)) % 2)
                {
                        Buf_RF_Data[10] |= 1;
                        Buf_RF_Data[10] <<= 1;
                }
                else //为偶数个 1 则补 0
                {
                        Buf_RF_Data[10] <<= 1;
                }        
        }        
        Buf_RF_Data[0] <<= 2;
        Buf_RF_Data[0] |= 0x80;
        Buf_RF_Data[0] |= Buf_RF_Data[1] >> 3;

        Buf_RF_Data[1] <<= 5;
        Buf_RF_Data[1] |= Buf_RF_Data[2];

        Buf_RF_Data[2] <<= 3;
        Buf_RF_Data[2] |= Buf_RF_Data[4] >> 2;

        Buf_RF_Data[3] = Buf_RF_Data[4] << 6;
        Buf_RF_Data[3] |= Buf_RF_Data[5] << 1;
        Buf_RF_Data[3] |= Buf_RF_Data[6] >> 4;

        Buf_RF_Data[4] = Buf_RF_Data[6] << 4;
        Buf_RF_Data[4] |= Buf_RF_Data[7] >> 1;

        Buf_RF_Data[5] = Buf_RF_Data[7] << 7;
        Buf_RF_Data[5] |= Buf_RF_Data[8] << 2;
        Buf_RF_Data[5] |=  Buf_RF_Data[9] >> 3;

        Buf_RF_Data[6] = Buf_RF_Data[9] << 5;
        Buf_RF_Data[6] |= Buf_RF_Data[10];

        for(kk = 7;kk > 0;kk--)
        {
                Buf_RF_Data[kk] = Buf_RF_Data[kk - 1];
        }
        Buf_RF_Data[0] = 0xFF;                //9个头中的前8个1
        Buf_RF_Data[8] = Buf_RF_Data[9] = Buf_RF_Data[10] = 0;//这个可以不清 0
}转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

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