32位CRC,某些输入设置为零。这不如虚拟数据准确吗?

时间:2015-10-29 14:06:51

标签: crc crc32 crc16

很抱歉,我自己应该能够回答这个简单的问题!

我正在开发一个嵌入式系统,其中32位CRC在硬件中完成,以提高速度。存在一个实用程序,我无法修改最初需要3个输入(单词)并返回CRC。

如果实现了标准的32位,那么将从32位字的实际数据生成CRC,并且2个仅包含0的32位字产生的CRC不如我刚刚编写/设置一些随机值最后2 32?

根据CRC /多项式,我对CRC的有限理解会说你输入的数据越多,它就越不准确。但是,在执行轮班时,不要使零数据降低准确度?

2 个答案:

答案 0 :(得分:1)

使用零与您可能选择的其他值没有什么不同。无论哪种方式,输入字也将在CRC位之间传播。

答案 1 :(得分:0)

我同意Mark Adler的观点,零在数学上并不比其他数字差。但是,如果您无法更改的实用程序会将初始CRC设置为零,那么请选择非零填充字。初始CRC = 0 + Data = 0 + Pads = 0产生最终CRC = 0。这在技术上是有效的,但是常规地获得CRC = 0对于数据完整性检查是不合需要的。您可以使用非零填充字符来补偿这样的问题,例如: pad = -1。