zoukankan      html  css  js  c++  java
  • BCC校验(异或和校验)

    BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是两个16进制的字符)进行异或后即得到校验码。 
    例如16进制数据:01 A0 7C FF 02 
    计算:01 xor A0 xor 7C xor FF xor 02 = 20 
    校验码是:20 

    /********************************************************************
    函数功能:异或和校验
    输入参数:命令字开始的位置
    输出参数:
    返 回 值:校验码
    修改信息: 
    ********************************************************************/
    u8 CheckOut(const void *data)
    {  
        int lenth = 0;
        const u8 *buf = data;  
        u8 retval = 0;   
        lenth = 4 + (int)buf[3] + ((int)buf[2] * 256);    //将buf[2] buf[3] 长度转成int
        my_printf("data需校验长度为:%d
    ",lenth);
        while(lenth)  
        {    
            retval ^= *buf++;    
            --lenth;  
        }  
    
        my_printf("校验和%x
    ",retval);
    
        return retval;        //返回值为校验码 放在最后一位
    }

    本例中传入的数据data

    data[2] data[3] 是后面跟着的数据域的长度

    整个参与校验的数据全部长度为lenth

    返回值为得出的校验码

  • 相关阅读:
    CreateRemoteThread注入DLL
    远程线程注入引出的问题
    jQuery中排除指定元素,同时选择剩下的所有元素
    YUIDoc的使用方法小结
    实验二 栈和队列的应用
    实验一 线性表的基本操作
    最大子段和详解
    HDOJ 1995 汉诺塔V
    错排公式 详细解答
    HDOJ 2212 DFS
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12368133.html
Copyright © 2011-2022 走看看