Länge aus Dreiergruppen und Padding berechnen
Standard-Base64 nach RFC 4648 stellt drei Bytes als vier Zeichen dar. Eine letzte Gruppe mit einem Byte benötigt ==, zwei Bytes = und drei Bytes kein Padding. Mit Padding ohne zusätzliche Zeilenumbrüche lautet die Länge 4 * Math.ceil(n / 3), wobei n die Eingabebytes zählt. Null Bytes ergeben Länge null.
n = new TextEncoder().encode(input).length
length = 4 * Math.ceil(n / 3)
f 1 Zg== 4
fo 2 Zm8= 4
foo 3 Zm9v 4
foob 4 Zm9vYg== 8Diese festen Beispiele wurden mit der tatsächlichen Funktion ausgeführt. f, fo und foo ergeben trotz unterschiedlicher Eingabelänge vier Zeichen; ihr Padding unterscheidet sich. foob umfasst vier Bytes und ergibt acht Zeichen. Padding kennzeichnet die letzte Gruppe und stellt keine zum Original hinzugefügten Zeichen dar.
Zeichen, Bytes und Zeilenumbrüche unterscheiden
Moyoutil wandelt Eingaben mit TextEncoder in UTF-8-Bytes um. Das Beispiel 가 hat drei Bytes und ergibt 6rCA, vier Zeichen. f mit anschließendem LF-Zeilenumbruch hat zwei Bytes und ergibt Zgo=. Leerzeichen und Zeilenumbrüche im Original sind beim Kodieren Daten. HTTP-Header, JSON-Hüllen und Daten-URL-Präfixe sind nicht Teil der Formel.
base64("가") // 6rCA
base64("f\n") // Zgo=Geben Sie den Originaltext ein und wählen Sie Kodieren. Zum Dekodieren geben Sie nur Standard-Base64 ein. Beim Dekodieren wird Eingabe-Leerraum entfernt, beim Kodieren bleibt Original-Leerraum erhalten. Base64URL mit - und _ und die Wiederherstellung beliebiger Binärdateien werden nicht unterstützt. /w== ist als Base64 lesbar, verursacht aber einen Fehler, weil die Bytes kein UTF-8-Text sind. Eingabeänderungen löschen das alte Ergebnis und deaktivieren Kopieren; wandeln Sie erneut um.
Häufig gestellte Fragen
Vergrößert Base64 Daten immer um etwa 33%?
Bei großen Eingaben nähert sich das Verhältnis 4/3; bei kleinen wirkt Padding stärker. Ein Byte wird zu vier Zeichen. Zählen Sie Bytes und prüfen Sie das Padding für die genaue Länge.
Wandelt die Oberfläche leere Eingaben in null Zeichen um?
Die Formel liefert für null Bytes null. Moyoutils Oberfläche fordert bei leerer Eingabe jedoch Inhalt an. Der Grenzfall der Formel und die Eingaberichtlinie unterscheiden sich.