Ich habe eine Textdatei mit vorzeichenlosen Ganzzahlen im Bereich 0, .., 2^32-1. Jede Zeile enthält eine einzelne ganze Zahl (und ein Zeilenumbruchzeichen).Lesen Sie eine Datei mit unsigned Ints und schreiben Sie es in Binär in C++
Ich möchte es in eine Binärdatei schreiben, um Platz zu sparen (so dass jedes int genau 4 Bytes dauert). Was wäre der beste Weg das zu tun?
Ich habe ein paar Optionen ausprobiert, keiner von ihnen scheint zu funktionieren. Hilfe wird geschätzt.
Strom (nicht arbeiten) Code:
#include <fstream>
#include <iostream>
#include <stdio.h>
int main(){
int x;
while (std::cin >> x){
fwrite((void*)&x, sizeof(x), 1, stdout);
}
return 0;
}
Es wird mit kompiliert: g++ compress.cc -o compress
.
Es scheint jedoch, nur die erste Ganzzahl auszugeben.
Zum Beispiel haben die ich den Befehl lief ./compress < bla | wc -c
Wo „bla“ eine Datei
1864754174
2150244390
1703231727
Das Ergebnis des Befehls enthält, war 4
, und nicht 12
als ich erwartet hatte.
Was haben Sie versucht? gerade jetzt, diese Frage ist nur geben Sie mir den Code. Das wird fast sofort abgelehnt und geschlossen. Denken Sie daran, Ihre Frage zu bearbeiten, antworten Sie nicht einfach im Kommentarbereich. –
@Ben - Code hinzugefügt, danke für deinen Kommentar. –
Ok, was funktioniert jetzt nicht? Bitte lesen Sie, wie man einen [MCVE] (http://stackoverflow.com/help/mcve) erstellt –