Warum Binärdateien wie dieses Snippet eines PNGs all diesen Leerraum enthalten?

370
Lance Pollard

Hier ist ein Ausschnitt des ersten Teils einer PNG-Datei, wenn Sie sie in Sublime Text öffnen und den Hex-Code direkt anzeigen.

8950 4e47 0d0a 1a0a 0000 000d 4948 4452 0000 02e7 0000 0155 0806 0000 004c ed41 2b00 0000 0662 4b47 4400 ff00 ff00 ffa0 bda7 9300 0000 0774 494d 4507 d907 1209 3738 0601 8766 0000 2000 4944 4154 789c ecbd 799c 6567 5de7 fff9 3ef7 5675 279d a4b3 d008 1242 2288 c486 10e8 ee74 57a7 bb53 28a2 202e a8c1 0d07 d780 a8a3 8338 fc04 c601 45dc 1750 5161 1670 e437 0e71 5c90 4504 a549 77ba 7a65 0f20 8681 8140 423a 2b49 7aa9 aafb 7ce7 8fb3 dce7 3ce7 

Es scheint, als könnten Sie etwas Platz sparen, indem Sie den Leerraum in der Datei entfernen. Ich würde gerne wissen, ob dies eine Optimierungstechnik für PNGs wäre. Oder es hat vielleicht einen Vorteil oder Zweck, diese vier Zeichen durch ein Leerzeichen voneinander zu trennen, das mir nicht bewusst ist.

0
Was meinst du mit Whitespace? Die Spalten zwischen zB 8950 und 4e47 sind in der Datei nicht vorhanden. John Dvorak vor 5 Jahren 3
Ich bin so verwirrt. In Sublime Text kann ich ein Leerzeichen in den Spalten markieren, damit ich es nicht verstehe. Lance Pollard vor 5 Jahren 1
Ist es tatsächlich eine gültige PNG-Datei (können Sie sie in einem Bildbetrachter öffnen) und nicht die Ausgabe von beispielsweise XXD? XXD kann Bytes durch zwei gruppieren, aber ich weiß nicht, ob Sie die Klartextspalte weglassen können. John Dvorak vor 5 Jahren 1
Ja, das ist nur ein normaler Png. Ich bekomme die gleichen Ergebnisse, wenn ich einen Screenshot anschaue, der mit dem Mac aufgenommen wurde. Lance Pollard vor 5 Jahren 0

1 Antwort auf die Frage

2
grawity

Das Leerzeichen ist nicht in der Datei enthalten. Was Sie sehen, ist nicht Text - es ist eine Liste von hexadezimalen Zahlen, und eine Zahl ist das gleiche, ob es Räume in der Mitte hat oder nicht. So ist es immer noch vier Bytes, ob man sie als schreiben 89 50 4e 47oder 89504e47oder (137, 80, 78, 71)oder in der Tat wie �PNG.

Sie sehen dies wahrscheinlich, weil Sublime Text erkennt, dass der Inhalt der Datei nicht sinnvoll als Text angezeigt werden kann. Es wählt also eine alternative Darstellung - jedes Byte als zwei Hex-Ziffern. (Um ein besseres Beispiel zu erhalten, werfen Sie einen Blick auf dieses Plugin für Sublimetext.)

Erinnern Sie sich, dass jede Datei aus Bytes besteht und ein Byte eine Zahl zwischen 0 und 255 Dezimalstellen (oder 0 bis FF hexadezimal) ist. Obwohl Texteditoren jedes Byte im Allgemeinen als Buchstaben anzeigen, ist dies nicht die einzige Möglichkeit.

Danke, ich fange an zu verstehen. Ich verstehe nicht, warum es so schwierig ist, einfach die Binärdatei zu öffnen und 001010011 eine Reihe von Einsen und Nullen zu sehen, das wäre schön. Lance Pollard vor 5 Jahren 0
@LancePollard: Es ist schwer, weil Sie versuchen, dies mit einem Texteditor zu tun, der nicht für diesen Zweck gedacht ist. (Selbst wenn der Hex-Modus _at all_ vorhanden ist, ist Sublime bereits über die meisten Texteditoren hinaus.) grawity vor 5 Jahren 0
@LancePollard: Aber es ist auch sinnlos zu fragen - selbst wenn es binär wäre, würden Sie _die gleichen Zahlen sehen, nur in einem Format, das viel ausführlicher ist und viel schwieriger ist, damit zu arbeiten. Es spielt auch keine Rolle, ob Sie die Zahlen hexadezimal, binär, dezimal oder oktal sehen. ** Dies sind die gleichen Zahlen. ** Hex-Editoren verwenden Hex, da dies am einfachsten ist. Die meisten Leute, die dieses Feature _need_ sahen, wenn sie binär gesehen hätten, würden sagen: "Ich verstehe nicht, warum es so schwer ist, die Datei und das Hexadezimalformat 89504e zu öffnen ... das wäre schön." grawity vor 5 Jahren 2
Gut zu wissen, vielen Dank :) Lance Pollard vor 5 Jahren 0