2012-04-12 6 views
1

Ich lerne FileIO in C und war wenig mit den Binärdateien verwechselt. Meine Frage ist, was ist der Nutzen von Binärdateien, wenn wir immer Dateien in ASCII oder einem anderen Format verwenden können, die leicht verständlich sind. Auch in welchen Anwendungen sind Binärdateien sinnvoller? Irgendwelche Hilfe auf diese wirklich appriciated.Thanks!Was sind die Verwendungsmöglichkeiten von Binärdateien?

+0

Programme sind binär. Jeder mögliche Binärcode kann eine Programmanweisung für die CPU sein. – gbulmer

+0

Lassen Sie mich Ihre Frage mit einer anderen Frage beantworten: Sind Sie sicher, dass Sie ohne großen Aufwand eine C-Struktur in einer Datei speichern könnten, wenn Sie nur den ASCII-Modus verwenden? –

Antwort

5

Alle Dateien sind binärer Natur. ASCII-Dateien sind die Untermenge von Binärdateien, die Daten enthalten, die als "menschenlesbar" betrachtet werden können.Eine reine Binärdatei ist nicht auf die lesbare Teilmenge von Zeichen beschränkt.

3

Geschwindigkeit des Zugangs

Obfuscation

Die Fähigkeit, native Objekte zu schreiben, ohne die Erstellung große serialisierten Dateien abzulegen.

+0

+1 für Verschleierung – mgilson

3

ASCII ist für Menschen leicht verständlich, aber für viele andere Zwecke ist es effizienter und einfacher für den Computer, Dinge in einem binären Format zu speichern. Wenn Sie beispielsweise eine Folge von ganzen Zahlen beibehalten möchten, ist es für den Computer einfacher, die 4 Bytes zu lesen/schreiben, die für die Darstellung einer int erforderlich sind, als die ASCII-Darstellung der Zahl zu schreiben und dann beim Lesen zu analysieren .

2

Es ist von entscheidender Bedeutung, dass jeder Byte-Wert gespeichert werden kann, z. B. Programme sind binär. Jeder mögliche binäre Code kann eine Programmanweisung für die CPU sein.

ASCII speichert nur 7-Bit-Werte, daher sind die Hälfte der möglichen Werte verschwendet.

Weiter, was würde eine ganze Zahl als gespeichert werden?

Die Nummer 4294967295 kann in 4 Bytes, 32 Bits gespeichert werden, aber wenn sie als Zahl in ASCII gespeichert wären, würden 10 Zeichen benötigt. Weiter würde es Verarbeitung erfordern, um es in die 32-Bit-Nummer umzuwandeln. Keines dieser Dinge ist gut.

Die 32-Bit-Nummer ist eine feste Größe, so dass es einfach ist, den 234856.-Wert in der Datei zu erreichen, suchen Sie einfach nach Position 4 * 234856. Wenn 32-Bit-Nummern als ASCII gespeichert werden, müssen sie entweder immer 10 Byte lang sein, wodurch die Datei 2,5 Mal größer wird, oder sie werden als variable Größe gespeichert, sodass es praktisch unmöglich ist, einen bestimmten Wert zu suchen, ohne die gesamte Datei zu lesen .

Edit:

Ist Hinzuzufügen ist, dass (bei normalem Gebrauch) ein Mensch nicht die Daten in einer Datei gespeichert sehen. Die einzige Möglichkeit, den Inhalt von Dateien zu untersuchen, besteht darin, Programme auszuführen, die die Daten lesen und verwenden können. Daher ist die Bequemlichkeit eines Menschen eine kleine Überlegung.

Im Allgemeinen werden Daten in der für die Verwendung von Programmen am besten geeigneten Form gespeichert, und das Formular wurde so entworfen, dass es dem Zweck des Programms entspricht. ASCII ist ein Format, das für Textbearbeitungsprogramme entwickelt wurde, um für Menschen lesbare Dokumente zu erstellen und einfache Möglichkeiten zur Anzeige des Textes zu unterstützen, die auf englische Buchstaben, Zahlen und einige Interpunktionszeichen beschränkt sind. Wenn wir die gesamte geschriebene Sprache unterstützen wollen, ist ASCII viel zu begrenzt.

Ich glaube, wir haben über eine Million Zeichen, um menschliche geschriebene Sprachen (und einige andere Bilder) darzustellen, und wir haben noch keine Zeichen für alle menschlichen Sprachen.

UTF-8 ist eine Möglichkeit, die geschriebenen Zeichen, die wir bisher haben, als mehrere Bytes darzustellen. UTF-8 verwendet eine 8-Bit-Codierung, die außerhalb des ASCII-Bereichs liegt.

+0

+ 1..thx für eine gute Erklärung. Du hast mich wieder zum Nachdenken gebracht :) – Shash

1

Stellen Sie sich eine Binärdatei als eine echte Darstellung von Daten vor, die direkt von einem Computerprogramm interpretiert werden und nicht von Menschen gelesen werden sollen. Für ein Programm wäre es eine Menge Aufwand, um Daten zu schreiben, sei es ASCII oder numerisch in einem Ascii-Format. Am wahrscheinlichsten würde der Programmierer ein Protokoll zum Schreiben von Arrays, Strukturen und Skalaren in eine Datei in ASCII-Form erfinden müssen, so dass sie für Menschen lesbar und auch von dem Programm wieder eingelesen und in Binärform zurückkonvertiert werden könnten.

Eine Datenbanktabelle ist ein gutes Beispiel. Unabhängig davon, ob in der Tabelle Text- oder numerische Felder vorhanden sind, liest und schreibt der Datenbankmanager diese Daten im Binärformat. Es ist einfacher zu schreiben, einzulesen und dann zu konvertieren, um alle Daten anzuzeigen, die Sie lesen können.

Wahrnehmung gab eine große Antwort, die ich nie zuvor in Betracht gezogen hatte. Alle Daten sind binär und ascii ist eine Teilmenge. Diese Antwort ließ mich an ftp denken und den Modus auf ascii oder binär setzen. Wenn ich Windows-Binärdateien pendle, die auf einem Linux-System gespeichert sind, sage ich FTP, sie als Binärdateien zu übertragen. Das bedeutet, interpretiere nicht als ASCII-Datei und füge \ cr am Ende jeder Zeile hinzu. Es gibt sogar Zeiten, in denen ich .csv- und .txt-Daten als Binärdateien übertrage, weil ich weiß, dass Windows Excel weiß, wie man diese Nicht-DOS-Dateien interpretiert.

+0

Danke für deine Erklärung. +1 – Shash

0

Ich möchte nicht ein Programm schreiben, das Bilder oder Audiodateien oder GIS-Daten oder Raumfahrzeug-Telemetrie codieren/dekodieren muss, oder < füllen Sie das leere > als ASCII.