我试图模仿用于在 PNG 文件中创建 CRC 的函数,我正在使用 autodin II 多项式和来自:
http://www.opensource.apple.com/source/xnu/xnu-1456.1 的源代码。 26/bsd/libkern/crc32.c
我的测试都是针对 IHDR 块的,所以我的参数是:
crc - 0xffffffff 和 0(都已建议)
buff - IHDR 块类型的地址。
length - IHDR Chunk 的长度 + 4(块数据的长度 + 类型的长度)
我以二进制形式打印了计算出的 CRC,并将其与块的实际 CRC 进行了比较。我看不出有任何相似之处(小端序、反转位、异或等)。
这是 IHDR 块的数据(十六进制格式):
长度(大端):d0 00 00 00 (13)
类型:49 48 44 52
数据:00 00 01 77 00 00 01 68 08 06 00 00 00
现有 CRC: b0 bb 40 交流电
如果有人能告诉我为什么我的计算失败了,或者给我一个可以工作的 CRC32 函数,我将不胜感激。谢谢!