zlib数据格式压缩后的数据如何在字节边界结束

How does the compressed data end at the byte boundary in zlib data format

在RFC1951 DEFLATE规范中,指出压缩数据块不一定从字节边界开始。这也意味着块可能不会在字节边界上结束。

但是在RFC1950 ZLIB Compressed Data Format spec中,似乎表示压缩后的数据占用整数个字节。 ZLIB 在 CM=8 时使用“deflate”压缩方法。

+=====================+---+---+---+---+
|...compressed data...|    ADLER32    |
+=====================+---+---+---+---+

如何确保使用 deflate 压缩的 zlib 格式的 压缩数据 始终是整数字节,而另一方面,DEFLATE 规范不保证压缩块在字节边界结束?

这是否意味着如果块不是以字节边界结束,则压缩必须在块的末尾添加某种虚拟位?

是的,根据需要在最后一个块后附加了零位以达到字节边界。