本帖最后由 snakeemail 于 2010-3-29 20:17 编辑
为什么初值要设置0xFFFF ,我设成这样根本就不对呀?
查到一点资料,似乎取反或不取反都行,只要收发两边都一样就可以了
移位寄存器可以初始化成 1 而不是 0。同样,在用算法处理之前,消息的最初 n 个数据位要取反。这是因为未经修改的 CRC 无法区分只有起始 0 的个数不同的两条消息。而经过这样的取反过程,CRC 就可以正确地分辨这些消息了。
1 byte checksum 29
CRC-16 0x25B4
CRC-16 (Modbus) 0x2590
CRC-16 (Sick) 0x2195
CRC-CCITT (XModem) 0x5A76
CRC-CCITT (0xFFFF) 0x4B7A 是协议就要求取反的吗????
CRC-CCITT (0x1D0F) 0xABB8
CRC-CCITT (Kermit) 0x296A
CRC-DNP 0x3545
CRC-32 0x55404551 |