Algorithm IDAT PNG块,第一个字节意外,我错在哪里?

Algorithm IDAT PNG块,第一个字节意外,我错在哪里?,algorithm,graphics,png,deflate,inflate,Algorithm,Graphics,Png,Deflate,Inflate,我创建了一个png 3x3,有3种不同的颜色和1个2x2的黑白,用于测试 基本上,我已经能够将字节的所有位分配给它们各自块中的特定角色,但IDAT不是意外的 IDAT类型声明后的第一个字节为二进制8格式: 00011000 其中,基本上遵循在线文档: 0001应为CM=1 1000应该是CINFO=8 但我希望找到一个1000=8厘米的PNG标准压缩方法 我错在哪里?这里是完整的数据流 在理解了这一部分之后,我将在一个尚未构建的软件中实现充气/放气算法 这里是IDAT块的完整数据流 数据流:

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

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

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

00011000
其中,基本上遵循在线文档:

0001应为CM=1 1000应该是CINFO=8

但我希望找到一个1000=8厘米的PNG标准压缩方法

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

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

这里是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|
     +--------+

您不需要在软件中实现充气/放气算法,因为这已经为您完成了。

CM是底部字节,CINFO是顶部字节。谢谢@harold。在文档中,我可以看到:位0到3cm压缩方法位4到7cinfo压缩信息为什么我应该将0到3读作最后一位,我通常会读作4-7?另外,我是否应该在创建数据流时还原所有子类字节中的所有0-3和4-7?因为位通常从底部开始编号,我不确定是否真的有充分的理由这样做,尽管这确实可以清楚地表明它们的权重,例如位3的权重为2³,但这就是为什么它是Dear Dt Adler,我读了很多你的评论,谢谢你所做的一切。我需要实现充气/放气算法,因为我正试图用一个软件对png进行后期处理,但无法做到这一点。你对如何进行有什么建议吗?