Frage

Wie verstehe ich die Skillung, die eine Base64 encoder

a) nimmt der Quelle, Binär -, und pads mit Nullen, um ein Vielfaches von 24 bytes long.

b) es dann transkodiert es, sechs bits zu einer Zeit, zu der Zielgruppe von 64 Zeichen (A..Z, a..z, 0..9, +, -).Wenn es feststellt, dass die letzten zwei bytes (16 bits) wurden mit Nullen aufgefüllt, die letzten beiden Zeichen sind transkodiert als '=='.Wenn es feststellt, dass das Letzte byte (8 bits) wurden mit Nullen aufgefüllt, das Letzte Zeichen ist transkodiert als '='.

Meine Frage ist, in Schritt (b), Woher weiß er, dass die letzten bytes sind null, denn Sie wurden in gepolsterten vs.Sie sind Nullen, weil thay sind Bestandteil der gültigen Binär-source-Daten?

Ist es, dass das subsystem ist verantwortlich für Teil (b) zu wissen, was geschah in Teil (a)

War es hilfreich?

Lösung

Der encoder (im Gegensatz zu dem decoder) wird wissen, die Länge der Eingabe-Daten und in der Lage sein, um herauszufinden, ob zu Ausgang nichts, "=" oder "==" am Ende.Ihre Frage wird angenommen, dass es keine Verbindung zwischen den beiden Phasen, die Sie erwähnen, aber das ist nicht wahr, in den Implementierungen, die ich gesehen habe.

Die Implementierung, die ich hatte schreiben nicht die erste Stufe, weil es sich hatte Routinen zum extrahieren 6-bit-Gruppen aus dem input-stream ein zu einer Zeit, erhöht byteCount jedes mal.Dann, am Ende, den Ausdruck "byteCount%3"die verwendet wurde, um zu entscheiden, welche Schnur zum Anhängen an den Ausgabe-stream.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top