Frage

Ich bin die Umsetzung den Huffman-Algorithmus in C I die Basisfunktionalität erhalten habe nach unten bis zu dem Punkt, wo die binären Codeworte erhalten werden. so wird beispielsweise ABCD 100011000 oder etwas ähnliches. Jetzt ist die Frage, wie Sie diesen Code in binärer Form in der komprimierten Datei schreiben. Ich meine, wenn ich es schreibe normalerweise jeweils 1 und 0 wird ein Zeichen sein, so gibt es keine Kompression ist.

Ich brauche diese 1 und 0 in ihrer Bit-Form zu schreiben. in C ist das möglich, wenn ja, wie?

War es hilfreich?

Lösung

Bits sammeln, bis Sie genug Bits ein Byte zu füllen und es dann schreiben ..

z. so etwas wie folgt aus:

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;
  }
}

Sobald Sie Ihre Bits fertig zu schreiben haben Sie die Bit-Puffer zu spülen. Um dies zu tun nur Bits schreiben, bis current_bit gleich Null ist:

void Flush_Bits (void)
{
  while (current_bit) 
    WriteBit (0);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top