CRC 预置和残差

标签 crc preset

我正在使用需要我生成 16 位 CRC 的设备。

该设备的数据表说它需要以下 CRC 定义:

CRC 类型长度多项式方向预设残差
CRC-CCITT 16 位 x16 + x12 + x5 + 1 正向 FFFF (16) 1D0F (16)

其中预设=FFFF(16 位)和残差=1D0F(16 位)

我搜索了一个 CRC 算法并找到了这个链接:
http://www.lammertbies.nl/comm/info/crc-calculation.html

两者都有。
CRC-CCITT (0xFFFF)
CRC-CCITT (0x1D0F)

预设和残留有什么区别?

最佳答案

您使用 初始化 CRC 寄存器预设 在输入您的信息之前。

残留物 是在输入消息后应留在 CRC 寄存器中的内容,加上其正确的 CRC。

如果您只是想发送消息,则不会看到剩余值。但是,当设备再次通过 CRC 算法运行您的消息 + CRC 时,如果没有传输错误,它将看到最终值 0x1D0F。

您也可以在不涉及设备的情况下向自己演示这一点。这可以帮助您确认您的算法正在执行至少类似于 CRC 的操作。

  • 首先,计算消息的 CRC。
  • 附加您的消息和 CRC,然后通过新的 CRC 计算传递整个内容(请记住先重置为预设值。)
  • 如果一切顺利,您的 CRC 寄存器应该包含剩余值。


  • 我找到的最好的 CRC 解释在这里:

    https://archive.org/stream/PainlessCRC/crc_v3.txt

    关于CRC 预置和残差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/241605/

    相关文章:

    hash - 与 CRC-32 等相比,非加密哈希检测数据错误的效果如何?

    C# Visual Studio 2010 : make custom preset classes

    html - 如何在 emmet 中创建自己的命令?

    iphone - 可以设置 session 预设 :AVCaptureSessionPreset1920x1080 returns 'yes' on iPhone 4

    c++ - 无法弄清楚如何计算CRC7

    java - CRC纠错库?

    c++ - 这是哪种 CRC 算法?如何提高?

    验证动态字节数组的 CRC 时崩溃 | C

    android.widget.AnalogClock 设置时间