小编Alp*_*Phi的帖子

CRC-CCITT实施

我使用以下函数生成CRC和,与在线CRC-CCITT计算器相比,它似乎没有返回相同的校验和.

此函数专门使用XMODEM CRC生成,其中0x8408多项式的初始fcs为0xFFFF.

uint16_t crc16(uint8_t byte, uint16_t fcs)
{
    uint8_t bit;

    for(bit=0; bit<8; bit++)
    {
        fcs ^= (byte & 0x01);
        fcs = (fcs & 0x01) ? (fcs >> 1) ^ 0x8408 : (fcs >> 1);
        byte = byte >> 1;
    }
    return fcs;
}
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?如果我发送0xFF或0x00,我得不到与http://depa.usst.edu.cn/chenjq/www2/SDesign/JavaScript/CRCcalculation.htm相同的校验和

printf("%04X\n", crc16(0x31, 0xFFFF)); //returns 2F8D
Run Code Online (Sandbox Code Playgroud)

c c++ checksum crc crc16

6
推荐指数
3
解决办法
3万
查看次数

标签 统计

c ×1

c++ ×1

checksum ×1

crc ×1

crc16 ×1