如何在Perl中修改它们后将比特流重新打包成比特流?使用Perl来修改一个比特流
我目前使用以下解压:
my $bits = 5;
my $code = '';
foreach my $i (reverse 0..$bits-1) {
$code <<= 1;
$code |= vec($data,$i,1);
}
例如,输出可以是16
编辑:
这个问题涉及的数据块一个GIF图像。
我想要做的是填充LZW代码以匹配PDF的LZWDecode
方法所需的长度。
LZWDecode
预计8位图像,其中<Clear>
代码是256和<End>
代码是257(PDF Reference,第44页)
对于5位的图像,代码0-31地图的颜色在图像的全球颜色表,<Clear>
是32和<End>
是33.
所以我需要重新打包比特流,使代码0-31保持不变,但32 +偏移256-32。
我使用ActiveState Perl for Windows。
这确实有帮助。从你添加的内容中,我们可以推断出该字段并不总是从第零位开始,我们可以推断出你不想破坏字节中的其他位。它还告诉我们,即使您正在阅读5,您也想一次读取8位数据。最后,它告诉我们您想操纵整个字段序列(而不仅仅是一个字段),而且您不需要处理任意字段大小。但它并没有告诉我们如何处理填充。你对剩下的部分做了什么? – ikegami