4KB原始数据的Zlib中未达到代码长度15



我正在验证一个进行解压缩(膨胀(的硬件设计块。解压缩后的数据输出应始终为4 KiB。作为测试数据,我使用zlib的deflate一次压缩4个KiB数据块,并将其作为测试的输入。我运行了多次回归,从未观察到代码长度为15的情况。你对如何做到这一点有什么建议吗?或者为什么这不可能?

开始:

eF4F4cGBZdmybbnJijFt7eOR931S/14B////3//7f//v//7v//7vf//73//+97///ffff//9
999///3333///v379+/fv3///v379+/fv3///v39/f39/f39/f39/f39/f39/f39/f39/f39
/f39/X6/3+/3+/1+v9/v9/v9fr/f7/f7/X6/3+/3+/1+v9/v9/v9fr/f7/f7vu/7vu/7vu/7
vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu/7vu9777333nvv
vffee++9995777333nvvvffee++9995777333nvvvffee++9995777333nvvvffee++99957
77333nvvvffee++99957793d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d
3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d
3d3d3d3d3d22bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2
bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2bdu2
bdu2bdu2bdu2bdu2bdu2bdu2bdtWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA8P8BVoseLg==

这是一个zlib流的Base64编码,解压缩到4096字节,并且有15位符号。它是通过生成Lucas数2,1,3,4,7,11,…来构造的。。。,第521、843页。最初的2递减为1,以说明deflate中块符号的末尾。然后用这些频率发射15个符号。(我选择了小写字母a..o,其中a出现843次。(这导致了2205个字节的序列,加上块符号的末尾,这是可能产生15位代码的最小输入。这小于4096,因此确实可以生成您要查找的测试向量。

然后,我添加了另一个1891a,将其填充为4096个字节。这不会改变生成的霍夫曼代码。然后,为了避免LZ77对长的、重复的符号串进行压缩,您可以使用该序列并使用仅Huffman策略(zlib中的Z_HUFFMAN_ONLYpigz -zH(使用zlib进行压缩。

如果您只想要一个原始的deflate流,那么删除zlib流的前两个和最后四个字节。

最新更新