質問

私は、バイナリコードワードが得られた時点までの基本的な機能を降りてきたC.でハフマンのアルゴリズムを実装しています。そう例えば、ABCDは100011000または類似したものになります。今の質問はどのように圧縮されたファイルにバイナリ形式でこのコードを書くんです。私は圧縮がないので、通常はそれぞれ1と0が1つの文字になりますそれを書く場合、私は意味します。

私は彼らのビット形式でそれらの1と0を記述する必要があります。 C.でいる可能性がありそうであればどのように?

役に立ちましたか?

解決

あなたがバイトを記入し、それを書くのに十分なビットを持ってまで、ビットを収集し..

例えば。このような何かます:

int current_bit = 0;
unsigned char bit_buffer;

FILE *f;

void WriteBit (int bit)
{
  if (bit)
    bit_buffer |= (1<<current_bit);

  current_bit++;
  if (current_bit == 8)
  {
    fwrite (&bit_buffer, 1, 1, f);
    current_bit = 0;
    bit_buffer = 0;
  }
}

あなたのビットを書き込む完了したら、あなたは、ビットバッファをフラッシュする必要があります。

:current_bitがゼロに等しくなるまで、そうするためには、単にビットを書き込みます
void Flush_Bits (void)
{
  while (current_bit) 
    WriteBit (0);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top