我创建了一个3种不同颜色的png 3x3和1种2x2黑白用于测试目的。
基本上我已经能够将字节的所有位分配到它们各自的Chunk中的特定角色,但是IDAT(不是意外的)。
IDAT类型声明后的第一个字节是二进制8格式的以下内容:
00011000
基本上,在线文档之后:
0001应为CM = 1 1000应该是CINFO = 8
但我希望找到1000(= 8)作为CM(png的标准压缩方法)。
我哪里错了?这里是完整的数据流。
在理解了这一部分之后,我将在一个尚未构建的软件中实现INFLATE / DEFLATE算法。
这里是IDAT Chunk的完整数据流 的数据流中:
000110000101011101100011111110000000111100000100000011000000110000100000111010101111111101111111
0000000000111000110101000000100011111000
答案 0 :(得分:1)
已在评论中回答,但正如document you are reading中所述(它有助于阅读整篇文章):
In the diagrams below, we number the
bits of a byte so that bit 0 is the least-significant bit, i.e.,
the bits are numbered:
+--------+
|76543210|
+--------+
您不需要“在软件中实现INFLATE / DEFLATE算法”,因为zlib已经为您完成了。