【问题标题】:CRC Procedure - Checking EfficientlyCRC 程序 - 有效检查
【发布时间】:2013-09-06 13:10:44
【问题描述】:

让我们得到一个 m 位消息,其中最后 n 位是 CRC 位。据我所知,为了检查是否正确接收,我们应该用特定的CRC算法的多项式对所有m位进行异或。如果结果全为零,我们可以说没有错误。

这是我的问题:

1) 使用前 (m-n) 位计算 n 个 CRC 位,然后将其与最后 n 位比较收到的消息?这样,如果接收到的和计算出的 n 位相等,我们就可以说没有错误。这种做法是真的吗?

2) 如果是真的,哪个效率更高?

【问题讨论】:

  • m 通常比 n 大几个数量级,因此节省的成本微乎其微。最好使用第一种技术,因为它也是对代码的完整性检查。
  • 请问这个健全性检查是如何工作的?而且我从您的评论和其他答案中了解到,“XOR & get all-zeros”方法仅适用于某些 CRC 类型,因为某些算法不会给出全零。

标签: crc


【解决方案1】:

您对如何检查 CRC 的描述并没有真正解析。但是无论如何,是的,通常进行 CRC 校验的方式是计算 pre-CRC 位的 CRC,然后将其与发送的 CRC 进行比较。这种方式效率非常低。更重要的是,它更容易验证是否正确,因为这是生成 CRC 并附加到另一端的方式。

该方法扩展到任何类型的校验值,如果在其前面的数据之后通过算法运行 CRC,则其他校验值不具有得到零的数学属性。此外,大多数带有预处理和后处理的 CRC 也不具有该属性。您需要取消后置条件,然后将结果与前置条件值进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2021-07-30
    • 2014-01-14
    相关资源
    最近更新 更多