Ich möchte eine Binärdatei erstellen, die eine ganze Zahl darstellt. Ich denke, die Datei sollte 4 Bytes sein. Ich benutze Linux. Wie geht das? Eine andere Frage: Wie ordne ich den Inhalt dieser Datei einer ganzen Zahl in C zu?Was ist eine Binärdatei und wie erstelle ich eine?
Antwort
Öffnen Sie die Datei für binäres Lesen/Schreiben. fopen nimmt einen b
Schalter für Parameterdatei Zugriffsmodus - see here
Siehe fopen page in Wikipedia für den Unterschied zwischen Text- und Binärdateien sowie ein Code-Beispiel zum Schreiben von Daten in eine Binärdatei
In Standard-C, fopen()
erlaubt der Modus "wb"
zu schreiben (und "rb"
zu lesen) im Binärmodus, also:
#include <stdio.h>
int main() {
/* Create the file */
int x = 1;
FILE *fh = fopen ("file.bin", "wb");
if (fh != NULL) {
fwrite (&x, sizeof (x), 1, fh);
fclose (fh);
}
/* Read the file back in */
x = 7;
fh = fopen ("file.bin", "rb");
if (fh != NULL) {
fread (&x, sizeof (x), 1, fh);
fclose (fh);
}
/* Check that it worked */
printf ("Value is: %d\n", x);
return 0;
}
Diese Ausgänge:
Value is: 1
Siehe man
für syscalls open
, write
und read
.
Aus der Sicht des Betriebssystems sind alle Dateien Binärdateien. C (und C++) stellen einen speziellen "Textmodus" zur Verfügung, der Dinge wie Zeilenumbrüche auf Zeilenumbrüche/Zeilenumbrüche (unter Windows) erweitert, aber das Betriebssystem weiß nichts darüber.
In einem C-Programm eine Datei ohne diese spezielle Behandlung zu erstellen, verwenden Sie die "b" Flagge von fopen():
FILE * f = fopen("somefile", "wb");
- 1. Was ist der Unterschied, wenn ich selbst eine OpenDJ-Binärdatei erstelle? VS Forgerock Enterprise Binary veröffentlicht?
- 2. Wie erstelle ich eine Gemfile?
- 3. Wie lese ich eine Binärdatei in C#?
- 4. Was passiert, wenn ich eine Ausnahme erstelle?
- 5. Wie erstelle ich eine Mehrfachfrage?
- 6. Wie erstelle ich eine Zufallszahl und drucke eine andere Zahl?
- 7. Wie erstelle ich eine Transaktionsnummer?
- 8. Wie erstelle ich eine MKMapView?
- 9. Wie erstelle ich eine PayPal-Zahlungsanforderung und sende eine Rechnung?
- 10. Wie erstellt man eine Binärdatei
- 11. make: Erstelle eine Test-Binärdatei für jede Datei im Testverzeichnis
- 12. VB - Wie lese und schreibe ich eine Binärdatei?
- 13. C# - Wie lese und schreibe ich eine Binärdatei?
- 14. Perl - Wie sende ich eine Binärdatei (Imagedatei) von einem "Master" -Host an einen Remote-Host und erstelle auch eine Verzeichnisstruktur?
- 15. Was kann ich tun, um eine UTF-8-Binärdatei wiederherzustellen?
- 16. Killing eine Haskell-Binärdatei
- 17. Was ist der Unterschied zwischen RegAsm.exe und Regsvr32? Wie erstelle ich eine TLB-Datei mit regsvr32?
- 18. Lesen und Base64 codieren eine Binärdatei
- 19. Wie erstelle ich eine richtige Website?
- 20. Wie erstelle ich eine nggrid benutzerdefinierte Fußzeile
- 21. Wie erstelle ich eine Drop-Down-Liste?
- 22. Wie erstelle ich eine Suchmaschine? (2013 Update)
- 23. Was ist eine Bitmaske und eine Maske?
- 24. Wie erstelle ich eine feste vertikale Navigation?
- 25. Wie erstelle ich eine templated, Swipable View?
- 26. Wie erstelle ich eine .pyd Datei?
- 27. Wie erstelle ich eine CHM-Datei?
- 28. Wie erstelle ich eine CGSize in Swift?
- 29. Wie erstelle ich eine Instanz von HttpContext?
- 30. Wie erstelle ich eine native Binärdatei in .NET Core mit der aktuellen Vorschau?
dies im Auge behalten (via Mann fopen): Die String-Modus kann auch Fügen Sie den Buchstaben "b" entweder als letztes Zeichen oder als Zeichen zwischen den Zeichen in einem der oben beschriebenen zwei Zeichen umfassenden Zeichenfolgen ein. Dies ist ausschließlich für die Kompatibilität mit C89 und hat keine Auswirkungen; Das 'b' wird ignoriert auf alle POSIX-konformen Systeme, einschließlich Linux. (Andere Systeme können Textdateien und Binärdateien unterschiedlich behandeln, und das Hinzufügen der 'b' kann eine gute Idee sein, wenn Sie I/O zu einer Binärdatei ausführen und erwarten, dass Ihr Programm möglicherweise in Nicht-Unix-Umgebungen portiert wird.) – tr9sh