Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Das ist eine gute Frage. Der Byte-Puffer ist eine gute Idee und die einzige Moeglichkeit einzelne Bits zu schreiben. In der STL gibt es auch ein BIT-Array fertig. Das kannste nehmen.Zitat
Bleibt bloß die Frage, wie du das letzte byte "halb angebrochen" schreiben sollst!
Quellcode |
|
1 2 3 4 5 6 7 8 |
long bits; int count; while( fread(&ch, 1, 1, dat) ) { bits=0; count = get_bitstream(bits, ch, root); //in die Datei schreiben } |
Quellcode |
|
1 2 3 4 |
- Datei zum schreiben oeffnen - 32Bit Wert in Datei schreiben (Anzahl der Bits die Relevant sind) - Bit-Array Byte fuer Byte auslesen und in Datei schreiben (die NULLen sollten Automatisch hinzugefuegt werden - Datei wieder schliessen |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void WriteBit(std::ofstream &file, bool bit) { static char bytebuffer = 0; static char bitcounter = 0; char dummy; if(bitcounter == 8) // Byte ist voll { file.write(&bytebuffer,1); bitcounter = 0; // "Bitzeiger" zurücksetzen bytebuffer = 0; // Puffer leeren } if(bit) dummy = 1; // Bit setzten else dummy = 0; // Bit nicht setzen dummy <<= bitcounter; // Bit an die richtige Stelle bewegen bytebuffer |= dummy; // Bit in den Puffer setzten ++bitcounter; } |
Werbeanzeige