Я искал свои мозги и сеть, почему это не работает. Я пытаюсь написать код для проверки контрольных сумм IDAT и тестирования, когда я иду с образцом хорошего изображения. Мой код:Расчет контрольных сумм IDAT в python
import binascii
import zlib
filename="sample.png";
with open(filename, 'rb') as f:
data=f.read()
index=data.find("IDAT");
print index;
idat=data[index:index+0x200+4]
print "IDAT: "+binascii.hexlify(idat)
crc=data[index+0x200+4:index+0x200+8]
print "CRC: "+binascii.hexlify(crc)
ccrc=zlib.crc32(idat)
print"Calculated CRC: "+hex(ccrc)
Выхода дает это:
python crc.py
190
IDAT: 494441546881edd6cd6...........<snip>
CRC: ce1f4dd7
Calculated CRC: -0x31e0b229
Контрольной сумма считывание с правом места. Заголовок IDAT и данные проверяются. Я проверил с другими инструментами, что контрольная сумма, считанная из файла, верна. Из моих исследований, настройки по умолчанию zlib должны давать правильный результат с помощью CRC32.
Что не хватает?
Заранее спасибо.