Warum wird beim Öffnen einer Binärdatei mit dem Texteditor kein Binärcode angezeigt? Wenn ich zum Beispiel ein Bild mit einem Texteditor öffne, sehe ich einige seltsame Zeichen und auch einige für Menschen lesbare Zeichen. Das Bild sollte jedoch binär codiert sein.
51
Antworten:
Binär- und Textdaten werden nicht getrennt: Es handelt sich lediglich um Daten . Es kommt auf die Interpretation an, die sie zum einen oder anderen macht. Wenn Sie Binärdaten (z. B. eine Bilddatei) in einem Texteditor öffnen, ist vieles davon nicht sinnvoll, da es nicht zu der von Ihnen gewählten Interpretation (als Text) passt .
Was Sie als Text bezeichnen, ist eine Teilmenge des möglichen Dateiinhalts: Daten, die in einem bestimmten Zeichensatz in lesbare Zeichen umgewandelt werden.
In ASCII sehen Sie beispielsweise, dass von 128 "erlaubten" Werten nur etwa die Hälfte Buchstaben und Zahlen sind, 30 Satzzeichen und der Rest Steuerzeichen . Die letztere Gruppe wird in Textdateien nur selten verwendet, und sie haben keine wirklich gute Textdarstellung. Einige von ihnen sind Tabulatoren und Zeilenumbrüche , bei denen Texteditoren bereits kreativ werden müssen, um sie anzuzeigen.
Einige Texteditoren verfügen über Optionen zum expliziten Anzeigen von Leerzeichen. Dann werden sie zusätzlich zu ihrem normalen Formatierungsverhalten (das auch nur die Interpretation dieser Zeichen ist) tatsächlich als Zeichen gezeichnet .
Pure ASCII interpretiert nur 128 Werte. Die zum Speichern dieser Informationen verwendeten Bytes haben jeweils 256 mögliche Werte, sodass die Hälfte der möglichen Werte in ASCII nicht zulässig ist. Diese werden z. B. in regionenspezifischen Zeichensätzen wie Latin 1 verwendet, in ASCII sind sie jedoch undefiniert. Sie haben keine nützliche Darstellung in einem Text-Viewer, der nur ASCII verarbeiten kann.
Binärdaten werden normalerweise nicht als Text interpretiert. In diesen Dateien sind also üblicherweise alle möglichen Bytewerte zu finden. Alles andere wäre verschwenderisch (und das ist ein Grund, warum Sie Text sehr gut komprimieren können). Bilddateiformate sind kompliziert und werden normalerweise nicht als Text angezeigt, sodass sie nicht lesbar sein müssen.
Da es keine gemeinsame Dateninterpretation (Zeichensatz) gibt, die alle möglichen Werte lesbaren Zeichen zuordnet, und da dies ohnehin keinen Sinn ergibt (da es sich um nicht lesbaren Text handelt), werden Hauptteile als Kauderwelsch angezeigt.
Ein Hex-Editor wählt eine andere Darstellung für die Daten: Er zeigt jedes Byte als zwei hexadezimale Ziffern an. Es ist nur eine andere Darstellung und eine mit einem leicht lesbaren Zeichensatz: Alle 256 möglichen Bytewerte können als zwei hexadezimale Ziffern dargestellt werden.
Da es eine einfache Zuordnung von Binärdaten zu Hex und umgekehrt gibt (4 Binärziffern zu / von einer Hexadezimalziffer) und Binärdaten nur sehr wenige Informationen pro Ziffer enthalten, ist Hexadezimal für Menschen im Allgemeinen die bevorzugte Methode, Binärdaten zu lesen, sofern es keine spezifischen gibt Gründe, eine andere Darstellung zu bevorzugen.
Einige Texteditoren haben möglicherweise einen Hex-Editor-Modus und eine Heuristik, die versucht, festzustellen, ob es sich bei einer Datei um Text oder um eine Binärdatei handelt, und wählen automatisch den einen oder den anderen Modus aus. Es kann jedoch schwierig sein, dies zu korrigieren, und es ist keine spezifische Eigenschaft der Datei, die angibt, ob es sich um die eine oder die andere Art handelt.
Einige FTP-Clients fordern Sie auf, anzugeben, welche Dateiendungen für Textdaten verwendet werden . Diese Programme ändern dann den Dateiinhalt entsprechend dem Betriebssystem des Computers, mit dem Sie verbunden sind, da Windows eine andere Zeilenendezeichenfolge (
CR/LF
) verwendet als Linux und Unix (einschließlich Mac OS X;LF
).quelle
Denn Sie haben es in einem geöffneten Text - Editor, kein binäres Editor .
quelle
Es hat alles mit Kontext und Interpretation zu tun. Was sich in Ihrem Computer befindet, sind Muster von Hoch- und Niederspannung oder magnetisierte Bereiche einer Platte, die nur dann an Bedeutung gewinnen, wenn wir entscheiden, wie wir sie interpretieren möchten.
Unter anderen Umständen könnte das Muster niedrig-hoch-niedrig-niedrig-niedrig-niedrig-niedrig-hoch die Zahl 65 bedeuten, ein Großbuchstabe 'A', eine himmelblaue Farbe, die ein Kunde am Tag 'März' bestellt hat 6. "oder irgendetwas überhaupt, wirklich.
Wenn Sie Ihre Bilddatei in einem Grafikprogramm öffnen, kann sie als Bild interpretiert werden. Sie weiß, welche Muster das Bildformat angeben, welche Muster die Bildgröße usw.
Wenn Sie Ihre Bilddatei in einem Texteditor öffnen, wird sie als Text behandelt. Dies ist ein sehr einfaches Format, das dem, was im Computer wirklich vor sich geht, sehr viel näher kommt, aber es gibt noch einige Interpretationen. Insbesondere wird fast jedes Muster als ein bestimmtes Zeichen interpretiert, einige normale wie AZ, aber auch einige komische Zeichen. Einige Muster werden nicht als Zeichen angezeigt, sondern als grundlegende Formatierung behandelt: Zeilenvorschub, Tabulator.
(Die Situation wird durch Dinge wie Unicode und Textcodierungen wie UTF-8 etwas kompliziert, aber der Einfachheit halber werde ich hier nicht darauf eingehen.)
Wenn Sie eine Binärdatei in einem Texteditor geöffnet haben, achten Sie darauf, keine Änderungen vorzunehmen, da fast jede Änderung die normale Interpretation des Dateiinhalts vollständig stört, dh die Datei wird zerstört und unbrauchbar.
quelle
Betrachten Sie als vereinfachtes Beispiel eine Bilddatei, die mit einem Texteditor geöffnet wurde.
Das Bild ist ein einfaches Schachmuster mit 3 Pixel breiten Quadraten und einem 1 Pixel grauen Rand zwischen den Quadraten. - Wiederholen Sie drei schwarze Pixel, ein graues Randpixel, drei weiße Pixel, ein graues Randpixel.
Die erste Zeile in diesem Bild hätte viermal den folgenden Wert:
(In Hex anstelle von Binary - die Zeichenfolge in Binary wäre viermal so lang - 0x7F wird durch 0b01111111 ersetzt.)
Wenn Sie diese Datenzeichenfolge in einen Texteditor laden, erhalten Sie den folgenden Text:
[Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Entf] [Entf] [Entf] [Leer] [Leer] [Leer] [Leer ] [Leer] [Leer] [Leer] [Leer] [Entf] [Entf] [Entf]
Dies liegt daran, dass 0x00 der ASCII-Code für den Null-Wert ist und Sie diesen dreimal schreiben müssen, um den Wert für ein schwarzes Pixel (auf jeden Fall in 24-Bit-BMP) zu erhalten, und dass Sie drei schwarze Pixel haben. Dann ist 0x7F der ASCII-Code für Delete, und Sie benötigen DAS dreimal, um ein graues Pixel zu erhalten. 0xFF ist für nichts Besonderes ein gültiger ASCII-Code - selbst im erweiterten ASCII-Satz - und Sie müssen ihn neunmal schreiben, um 3 weiße Pixel zu erhalten. Wenn Sie den Vorgang beenden, erhalten Sie drei weitere Löschvorgänge, um ein graues Pixel zu schreiben.
Eine andere Möglichkeit, dies zu zeigen, ist das umgekehrte Beispiel: Was müssen Sie in eine Datei schreiben, um beim Öffnen in einem Texteditor Nullen und Einsen zu erhalten?
Die ASCII-Codes für Null und Eins natürlich! Eine Null in einem Texteditor wird nicht als einzelnes Bit mit dem Wert 0 gespeichert, sondern als 8 Bits mit dem Wert 0b00110000 oder in hexadezimaler Schreibweise 0x30
Der ASCII-Code für '0' ist 0x30 und der ASCII-Code für '1' ist 0x31. Wenn Sie also ein Schachmuster als Nullen und Einsen speichern möchten, sieht Ihre Datei folgendermaßen aus:
Es steckt noch viel mehr dahinter - Dateien haben Starts und Stopps, Metadaten und alle anderen Arten von Dingen, aber die Lektion zum Mitnehmen und die Antwort auf Ihre Frage lautet:
Sofern die ersten 8 Bits Ihrer Datei nicht 0b00110000 sind, schreibt Ihr Texteditor keine '0', da dies der ASCII-Code für das Zeichen '0' ist. Sofern die ersten 8 Bits Ihrer Datei nicht 0b00110001 sind, schreibt Ihr Texteditor nicht '1', da dies der ASCII-Code für das Zeichen '1' ist.
quelle
Der Editor ist nicht schlau genug, um herauszufinden, ob ein Text sinnvoll ist oder nicht, und zeigt Dateien als Text an, sofern nicht ausdrücklich anders angegeben, sofern diese Funktion vorhanden ist. Wie andere betonten, haben einige Editoren die Funktion, hexadezimal anzuzeigen.
quelle