欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 奇偶位計算請問有什么好方法能實現 [打印本頁]

作者: lbq691477940    時間: 2015-9-30 19:41
標題: 奇偶位計算請問有什么好方法能實現
最近在研究ID卡讀寫請問有什么好方法能實現將 五個字節的十六進制每半個字節計算出其對應的奇偶位,然后將每半個字節加奇偶位共 5BIT排列成十行再對每列奇偶位計算,
最后在得到的55BIT前面加上 9個1 共得到 64BIT再每8BIT為一個字節分成8個字節的十六進制數呢?謝謝!
例子:
              //如下為 ID = 3000F94989 轉碼過程
                      111111111 --->九個頭
                                       0011        0              3
                                       0000        0              0

                                   ---------------------------------------  
                                       0000        0              0  
                                       0000        0              0   

                                ------------------------------------------
                                       1111        0              F
                                       1001        0              9

                          --------------------------------------------------
                                       0100        1              4
                                       1001        0              9

                             -------------------------------------------------
                                       1000        1              8
                                       1001        0              9  

                           ---------------------------------------------      
                                       1001        0      --->列奇偶位

轉換結果為:0XFF / 0X98 / 0X00 / 0X07 / 0XA4 / 0X99 / 0X46 / 0X52
作者: lbq691477940    時間: 2015-10-1 10: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
}




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1