关于zlib中使用的校验和adler32。
从rfc 1950年开始:
ADLER32:它包含根据Adler-32算法计算的未压缩数据(不包括任何词典数据)的校验和值。
现在解析出灰色数据并将zlib数据传递到计算adler32的外部程序。
结果是64c60bbd,而不是b0337596。
...或者从图像映射传递数据时。
结果是1a49bac4,而不是b0337596
checksum.exe的代码:
In [107]: print(copy2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
print(copy2)
TypeError: 'int' object is not callable
问题,什么会导致计算差异?即zlib的adler32的输入数据到底是什么?
如上所述,zlib adler32由未压缩的数据流计算,该数据流在png中是过滤后的数据流。在这种情况下,那将是...
请注意,这里的未压缩数据流是红色的50x50图像,为rgba,每行有一个附加字节用于过滤器,结果为10,050字节。那是50 * 50 * 40 + 50。