Ich implementiere Huffman-Codierung in C++ und ich kann erfolgreich einen Huffman-Baum erstellen und kann Zeichenfolgen codieren/decodieren.Huffman-Coding-Datei in C++
Das nächste, was ich tun möchte, ist in der Lage, Dateien zu kodieren/zu decodieren, aber ich habe ein paar Probleme. Ich verwende Bool-Vektoren, um die Codewörter zu enthalten. Mein Problem ist: Ich kann nur Bytes in eine Datei schreiben. Wie schreibe ich Stück für Stück? Gibt es vielleicht eine Bibliothek, die ich benutzen kann?
Die andere Sache ist, dass, wenn ich eine Datei dekodieren möchte ich den Baum selbst (oder die Codetabelle). Was ist der beste Weg, um den Baum zu serialisieren?
Jede Hilfe würde sehr geschätzt werden.
Zwei mögliche Optionen: Codieren Sie die Bits in Bytes. Oder benutze ein Byte pro Bit. –
Dies ist Ihre Formatspezifikation, also tun Sie was Sie wollen. Wenn Sie die Bits fest packen wollen, dann verbinden Sie die Bitvektoren und schreiben sie 8 Bits gleichzeitig. Wenn Sie Ihre Codes in Byte-artige Blöcke schreiben wollen, tun Sie das. Sie können Ihren Baum in ein Array (sehen Sie sich Baum Traversals) oder eine Kantenliste und schreiben Sie, wie Sie möchten. Es gibt zu viele Optionen, da du nicht wirklich angegeben hast, was du bereits hast ... – BeyelerStudios
Was dein zweites Problem betrifft, gibt es grundsätzlich nur drei Möglichkeiten, [einen Baum zu durchqueren] (https://en.wikipedia.org/wiki)/Tree_traversal). Wähle eins. Und anstatt "anzuzeigen", schreiben Sie den Baum auf die Festplatte. Tun Sie das Gegenteil, wenn Sie die Datei lesen. –