Bitweises Überschreiben einer Datei
-
Hallo, kann mir jemand sagen, wie ich eine Datei bitweise Überschreibe?
Ich habe über
int datasize = file.GetLength();
die Dateigröße ermittelt und will nun den Inhalt mit beliebeigen Zahlen füllen.
Mein Problem ist, das ich nicht genau weis, wie ich eben den gesamten Inhalt überschreibe.Ich danke euch für Hinweise
-
Meinst du Bit oder Byte weise ?
Devil
-
Ist das Prinzipiell nicht egal? Da ich über int datasize = file.GetLength() dieAnzahl der Bits zurück bekomme kann das durch 1024 dividiert werden und dann byteweise überschrieben werden.
Ich hatt mir eine Funktion wie:
for ( int i=0; i<= datasize; i++ )
{
file(i) = 0;
}gedacht, nur fehlt mir eben der realisierbare Befehl!
Wenn es byteweise einfacher geht, würde das natürlich auch gehen.
-
Soweit ich mich erinnere kannst du in C nur direkt auf bytes (char) zu greifen,
und über die Bitoperatoren die Bits auslesen oder setzen. Mir ist kein Datentyp
bekannt der direkt den Wert eines Bits enthält.Devil
-
GetLength() liefert die Anzahl der Bytes einer Datei zurück. Wenn du sie überschreiben willst, musst du die Datei mit
file.Open(dateiname,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary)
öffnen. Sie wird dann zunächst auf Null Byte Länge gekürzt. Dann kannst du mit
file.Write(&deinezahl,sizeof(int));
deine Zahlen hineinschreiben. Wichtig ist der Adressoperator & vor deiner Variablen und sizeof(...) musst du den Variablentyp übergeben (int, char, ...).
file.Close()
darfst du natürlich auch nicht vergessen.
-
@Fritz
1. Es steht nirgendwo, dass man mit file.GetLength() die Anzahl der Bits bekommt!2. Wenn man die N Bits durch 1024 dividiert, bekommt man nicht die Anzahl der Bytes, sondern irgendeine Anzahl N, die nix mehr mit Bits und Bytes zu tun hat.
1 Byte hat noch immer 8 Bit, und das wird sich so schnell auch nicht ändern
-
Ja ja, das war natürlich Obermüll was ich da geschrieben habe, das war natürlich die Umrechnung von Byte in kByte.