私は現在、ハフマン復号化に取り組んでいます。すべての文字エンコーディングのString
表現があります(つまり、「1101000100000001」)。私はそれを8つのグループに分割し、対応する値を返そうとしています(つまり、「11010001」は209を返します)。ただし、小さいファイルでは機能しないようです。以下は私が持っているコードです。よろしくお願いします。
for(char bit : textbytes.toCharArray())
{
if(bit == '1')
{
target |= 1 << bitCount;
}
bitCount++;
if(bitCount >= 8)
{
bitCount = 0;
bits.add(target);
target = 0;
}
}
byte[] bitstring = new byte[bits.size()];
for(int i = 0; i < bits.size(); i ++)
{
bitstring[i] = bits.get(i);
compressedFile.write(bitstring[i]);
}
PSインターネットから取った部分があるので、完全には理解できません( などtarget |= 1<< bitCount
)