IDAT PNG 块,第一个字节出乎意料,我错在哪里



我创建了一个具有 3 种不同颜色和 1 种 2x2 黑白的 png 3x3 用于测试目的。

基本上,我已经能够将所有字节位分配给它们在各自的块中的特定角色,但 IDAT 一个(并不意外(。

IDAT 类型声明后的第一个字节是以下二进制 8 格式的字节:

00011000

基本上,遵循在线文档:

0001应为CM =11000 应该是 CINFO =8

但我希望找到一个 1000 (=8( 作为 CM(png 的标准压缩方法(。

我错在哪里?这里是完整的数据流。

在理解了这部分之后,我将在一个尚未构建的软件中实现 INFLATE/DEFLATE 算法。

这里是 IDAT 块的完整数据流数据流:

000110000101011101100011111110000000111100000100000011000000110000100000111010101111111101111111
0000000000111000110101000000100011111000

已经在评论中回答了,但正如您正在阅读的文档中所述(这有助于阅读整个内容(:

  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已经为你完成了。

相关内容

  • 没有找到相关文章

最新更新