我试图为我自己的PNG库实现我自己的Inflater(我知道,不要重新发明轮子等等,等等)
我真的很难理解它应该如何工作,显然它应该是31的倍数(5位,所以总是31?),加上我们&# 39;应该从最不重要的位读到最重要的位,这是我之前看到的所有其他格式的倒退,这也引起了一些混淆。
我尝试阅读Zlib源代码,但它基本上是不可读的,并且RFC并不是关于"检查代码" (显然是zlib头的第二个字节的5个最低有效位,或者iDAT / fDAT卡盘数据部分的第二个字节)。
所以我的问题是;我该如何阅读,如何验证,我该怎么做?
编辑:检查代码在RFC 1950中也称为FCHECK
答案 0 :(得分:1)
RFC 1950准确而简洁地说明如何验证标题。
当被视为一个时,FCHECK值必须是CMF和FLG 以MSB顺序(CMF * 256 + FLG)存储的16位无符号整数是a 31的倍数。
CMF是流的第一个字节,FLG是第二个字节。那我还能说什么呢?取第一个字节,乘以256,然后加上第二个字节。如果该数字不是31的倍数,则标题无效。
你不知道如何检查数字是否可被31整除?