7
如何计算CRC32校验和?
也许我只是看不到它,但是CRC32似乎不必要地复杂,或者在我能在网上找到的任何地方都没有足够的解释。 我知道这是消息值的非基于进位算术除法的余数,再除以(生成器)多项式,但是它的实际实现使我无所适从。 我已经阅读了《 CRC错误检测算法的无痛指南》,我必须说这并非没有痛苦。它在理论上讲得相当不错,但是作者从来没有想到一个简单的“就是这样”。他确实说过标准CRC32算法的参数是什么,但是他却忽略了清楚地说明如何实现它。 让我感到高兴的部分是,当他说“这就是它”,然后接着说:“哦,顺便说一句,它可以被颠倒或以不同的初始条件开始”,而没有给出最终方法的明确答案。给定他刚刚添加的所有更改,计算CRC32校验和的过程。 关于CRC32的计算方式有更简单的解释吗? 我试图用C语言编写表的形成方式: for (i = 0; i < 256; i++) { temp = i; for (j = 0; j < 8; j++) { if (temp & 1) { temp >>= 1; temp ^= 0xEDB88320; } else {temp >>= 1;} } testcrc[i] = temp; } 但这似乎产生了与我在互联网上其他地方发现的价值观不一致的价值观。我可以使用在网上找到的值,但是我想了解它们是如何创建的。 …