如何在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