質問: (s2 + s1) % BASE; } return (s2 << 16) + s1; } unsigned char RGB[10000];//読み込んだrgbの値 unsigned long adler=1L; adler=update_adler32(adler,RGB,10000); ``` ### 試したこと pngをデコードしRGBA値に対して計算し、読み込んだadler32の値と比べた pngをエンコードし、計算した値を書き込んだが、チェックするソフトでははじかれる。 共にadler32の計算値が違うようです。 チェックしない?mac OS プレビューでは表示できます。 ### 補足情報(FW/ツールのバージョンなど) 使用ソフトはxcode 10.1です。
回答: 実際にpngからチャンクを切り出してinflateすると分かりますが 格納されているデータは50[行] * (4*50[列]+**1**) = 10050[byte]のデータです。 この1が何かと言うとこちらの解説によると行ごとのフィルターメソッド番号らしいです。 なお、切り出してinflateしたデータをadler32でハッシュ化すると`7C512444`が得られました。 (というか、zlibが勝手にadler32は付加するはずですが・・・) 各フィルターの解説