在 Perl 中修改比特后,如何将比特重新打包到比特流中?
我目前正在使用以下内容来解包:
my $bits = 5;
my $code = '';
foreach my $i (reverse 0..$bits-1) {
$code <<= 1;
$code |= vec($data,$i,1);
}
例如,输出可能是 16。
编辑:
这个问题与GIF图像的数据块有关。
我要做的是填充 LZW 代码以匹配 PDFLZWDecode
方法所需的长度。
LZWDecode
需要 8 位图像,其中<Clear>
代码为 256,<End>
代码为 257(PDF 参考,第 44 页。)
对于 5 位图像,代码 0-31 映射到图像全局颜色表中的颜色,分别<Clear>
为 32 和<End>
33。
所以我需要重新打包比特流,使代码 0-31 保持不变,但 32+ 偏移 256-32。
我正在为 Windows 使用 ActiveState Perl。