我正在寻找C或C ++的CRC32的实施,这是明确许可的,因为没有成本或公共领域。 这里的实现看起来不错,但是关于许可证的唯一的东西是“源代码”,这不够好。 我宁愿非LGPL,所以我不必愚弄一个DLL(我的应用程序是封闭的源代码)。 我在zlib中看到了adler32实现,但是我正在检查那些adler不适合的小块数据。
也许我只是没有看到它,但CRC32似乎不必要的复杂,或没有足够的解释,我可以在网上find任何地方。 我理解它的要点就在于它是由消息值的非进位的算术除法的余数除以多项式,但是它的实际执行却逃脱了我。 我已经阅读了CRC错误检测algorithm的无痛指南 ,我必须说这不是无痛的。 它理论上相当好,但作者从来没有得到一个简单的“这就是它”。 他确实说了标准的CRC32algorithm的参数是什么,但是他忽略了清楚地说明如何实现它。 得到我的部分是当他说“这就是它”,然后加上“哦,顺便说一下,它可以颠倒或从不同的初始条件开始”,并没有给出明确的答案,最终的方式是什么计算一个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; } 但是这似乎产生了与我在互联网上其他地方find的值不一致的值。 我可以用我发现的价值观,但我想了解他们是如何抵达他们的。 […]
如何在.NET中计算string的CRC32(循环冗余校验和)?