1. 程式人生 > >16位CRC校驗演算法

16位CRC校驗演算法

CRC校驗比較常用,本例校驗演算法異或0x1021.

U16 u16CRCVerify (const U8  *pu8Data,
                             U32  u32Len,
                             U16  u16CRCInit)
{
    U8  u8i;
    U32 u16CRC = u16CRCInit;

    while (u32Len--) {
        u8i    = 8;
        u16CRC = u16CRC ^ (((uint16_t)*pu8Data++) << 8
); do { if (u16CRC & 0x8000) { u16CRC = u16CRC << 1 ^ 0x1021; } else { u16CRC = u16CRC << 1; } } while (--u8i); } return u16CRC; }