IDAT PNG 块,第一个字节意外,我哪里错了?
IDAT PNG chunk, first byte unexpected, where am I wrong?
我创建了一个 png 3x3 具有 3 种不同的颜色和 1 个 2x2 黑白用于测试目的。
基本上我已经能够将字节的所有位分配给它们在各自块中的特定角色,但 IDAT 块(并不意外)。
IDAT 类型声明后的第一个字节为二进制 8 格式:
00011000
基本上,遵循在线文档:
0001应该是CM =1
1000 应该是 CINFO =8
但我希望找到 1000 (=8) 作为 CM(png 的标准压缩方法)。
我哪里错了?这里是完整的数据流。
理解这部分后,我将在尚未构建的软件中实现 INFLATE/DEFLATE 算法。
这里是 IDAT 块的完整数据流
数据流:
000110000101011101100011111110000000111100000100000011000000110000100000111010101111111101111111
0000000000111000110101000000100011111000
已在评论中回答,但如 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|
+--------+
您不需要 "implement the INFLATE/DEFLATE algorithm in a software",因为 zlib 已经为您完成了。
我创建了一个 png 3x3 具有 3 种不同的颜色和 1 个 2x2 黑白用于测试目的。
基本上我已经能够将字节的所有位分配给它们在各自块中的特定角色,但 IDAT 块(并不意外)。
IDAT 类型声明后的第一个字节为二进制 8 格式:
00011000
基本上,遵循在线文档:
0001应该是CM =1 1000 应该是 CINFO =8
但我希望找到 1000 (=8) 作为 CM(png 的标准压缩方法)。
我哪里错了?这里是完整的数据流。
理解这部分后,我将在尚未构建的软件中实现 INFLATE/DEFLATE 算法。
这里是 IDAT 块的完整数据流 数据流:
000110000101011101100011111110000000111100000100000011000000110000100000111010101111111101111111
0000000000111000110101000000100011111000
已在评论中回答,但如 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|
+--------+
您不需要 "implement the INFLATE/DEFLATE algorithm in a software",因为 zlib 已经为您完成了。