Datei splitten
-
Hallo!
Folgendes Problem:
Ich habe eine Datei, die 16MB groß ist. Nun möchte ich z.B. den Inhalt von Adresse 0xFE0000 bis 0xFFFFFF in eine neue Datei kopieren. Wie funktioniert das?
-
Wenn du zufällig unter Linux arbeitest, kannst du das mit dem Befehl split erledigen.
-
Ein bisschen mehr Info wär in der Tat nicht schlecht.
-
man split
-
Ich benutze Win2k und will das ganze in einer Konsolenanwendung von VC++ unterbringen.
-
Ich habe eine Datei, die 16MB groß ist.
OK, das verstehe ich.
Nun möchte ich z.B. den Inhalt von Adresse 0xFE0000 bis 0xFFFFFF in eine neue Datei kopieren.
Das verstehe ich nicht. Was meinst du mit Adresse?
-
Öffne die Datei in einem Hexeditor und du wirst es verstehen
-
villeicht folgendes hilft?
void * mem; size_t start = 0x00fff; size_t end = 0x0ffff; char * newMem = new char [end - start+1]; memcpy (newMem, oldMem + start, end - start + 1);
-
Ok, sowas in der Art brauche ich.
Wenn du mir jetzt noch sagen könntest, wie ich das an einer Datei anwenden kann, wäre es perfektDer Pfad der Quelldatei steht in der Variable strSource und der Name der zu erstellenden Zieldatei in strTarget. Sorry für die n00bigen Fragen
-
Öffne die Datei in einem Hexeditor und du wirst es verstehen
Du willst das 16646144. bis zum 16777215. Byte kopieren? Und warum kannst du das nicht sagen?
std::ifstream foo (/*...*/); std::ofstream bar (/*...*/); std::istream_iterator<char> iter(foo); std::advance (iter, 0xFE0000); copy_n (iter, 0xFFFFFF-0xFE0000, ostream_iterator<char>(bar));
-
Upd advance macht mei input-Iteratoren nicht viel Sinn, oder?
Aber beim Splitten willst du ja eigentlich auch nicht nur den letrzten Teil kopieren, weshalb du kein advance brauchst.