Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Sinn von Base64? (https://www.delphipraxis.net/182734-sinn-von-base64.html)

milos 13. Nov 2014 17:59

Sinn von Base64?
 
Hi,

was hat Base64 für einen Sinn? Bei Base64 werden ja nur 6 Bits genommen und davor 2 nullen gesetzt also "verschwendet" man von einen Byte ja 2 Bits und daher werden ja z.B. Bilder 30% grösser. Wieso nutzt man nicht Base256? Da sollte man ja theoretisch alle Bits eines Bytes nutzen können oder etwa nicht?

Wäre für eine erklärung dankbar, da ich irgendwie nichts richtiges dazu finde.

Freundliche Grüsse

jfheins 13. Nov 2014 18:01

AW: Sinn von Base64?
 
Bei der Übertragung von E-Mails wurden früher nur gewisse Zeichen unterstützt.
Man hat damit einen Weg gefunden, prinzipiell beliebige Binärdaten (Bilder) in einem begrenzten Zeichensatz zu übertragen, dessen Zeichen garantiert funktionieren.

Jeder SMTP-Server wird deine E-Mail wegwerfen, wenn du die vollen 8-bit pro Byte ausschöpfst. SMTP ist eben ein textbasiertes Protokoll.

Sir Rufo 13. Nov 2014 18:28

AW: Sinn von Base64?
 
Wikipedia: Base64

Luckie 13. Nov 2014 19:16

AW: Sinn von Base64?
 
Letztendlich werden mit Base64 Dateien, die Steuerzeichen enthalten, so codiert, dass sie nur anzeigbare Zeichen enthalten.

Phoenix 13. Nov 2014 20:23

AW: Sinn von Base64?
 
Die wichtigsten Sachen wurden schon gesagt.
So kann man beispielsweise auch Binärdaten wie Bilder direkt innerhalb von CSS oder direkt im HTML-Quelltext einer Webseite übertragen.

Damit wird die Datei zwar größer, und man verschwendet ein wenig Speicherplatz, aber spart sich zum Beispiel einen weiteren Request zum separaten Download der Bilder. Wenn man hier bei kleinen Seiten Performanceoptimierungen betreibt kann es sinnvoller sein, bestimmte kleine Bilder direkt mit zu liefern, als wegen ein paar Icons jedes mal einen neuen Request schicken zu müssen. Beispiel aus der Wikipedia zu Data-URL:

Code:
<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Roter Punkt" />
Ausserdem lässt sich der Text mit Deflate oder GZip wieder recht gut komprimieren ;-)

Sir Rufo 13. Nov 2014 20:26

AW: Sinn von Base64?
 
Zitat:

Zitat von Luckie (Beitrag 1279694)
Letztendlich werden mit Base64 Dateien, die Steuerzeichen enthalten, so codiert, dass sie nur anzeigbare Zeichen enthalten.

Hmmm, ganz lapidar wird einfach jede Datei (eine Aneinanderreihung von 8Bit-Bytes) in eine Ziffernfolge umgewandelt (nicht dual (2) oder dezimal (10) oder hexadezimal (16) sondern eben Base64 (64)). Und geschickterweise lassen sich diese 64 Ziffern ganz hervorragend durch jedes System schleusen.

himitsu 13. Nov 2014 20:27

AW: Sinn von Base64?
 
Genauso wie HEX ist es eine andere "Darstellung" von Daten, nur halt etwas komprimierter, als z.B. Hexadezimal, Oktal oder Binär (0/1).

Und wie bereits erwähnt ist es dafür da, um Daten (vorallem wegen der Steuerzeichen) in "ungefährlichen" ASCII-Code (7 Bit) umzuwandeln.

PS: Es gibt auch nicht wirklich DAS Base64, denn je nach Zielumgebung verwendet es für die Codierung auch schonmal einen etwas anderen Zeichensatz. (vorallem die letzten 2 Zeichen)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ mit = als Füllzeichen

Denn in URLs haben + und / auch eine gewisse Bedeutung, weswegen man da meistens was Anderes verwendet.
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_ mit = als Füllzeichen

uva.

milos 14. Nov 2014 20:47

AW: Sinn von Base64?
 
Danke für die vielen antworten :D
Hat mir Licht ins dunkle gebracht :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz