2015-12-05 6 views

Antwort

13

Ich habe eine Datei, die 450 KB groß ist, wenn Base64 codiert, aber welche Größe ist es dekomprimiert?

In der Tat, Sie dekomprimieren nicht, dekodieren Sie. Das Ergebnis wird kleiner als die codierten Daten sein.

64 Basis-Codierung benötigt ~ 8 Bit für jeweils 6 Bits der Originaldaten (oder 4 Byte 3 zu speichern), die Mathematik ist einfach:

Encoded   Decoded 
450KB/4 * 3 = ~ 337KB 

Der Overhead zwischen Base64 und decodierte Zeichenfolge ist fast konstant, 33,33%. Ich sage „fast“ nur weil die Auffüll-Bytes am Ende (=), die die String-Länge Vielfaches von 4 einige Beispiele Siehe machen:

String    Encoded     Len B64 Pad Space needed 
A     QQ==      1  2  2 400.00% 
AB     QUI=      2  3  1 200.00% 
ABC     QUJD      3  4  0 133.33% 
ABCD    QUJDRA==     4  6  2 200.00% 
ABCDEFGHIJKLMNOPQ QUJDREVGR0hJSktMTU5PUFE= 17 23 1 140.00% 
(300 bytes)  (400 bytes)    300 400 0 133.33% 
(500 bytes)  (668 bytes)    500 666 2 133.60% 
(5000 bytes)  (6668 bytes)   5000 6666 2 133.36% 
                ... tends to 133.33% ... 


den Raum Berechnung für uncodierte Daten:

Lassen Sie uns den oben genannten Wert QUJDREVGR0hJSktMTU5PUFE= erhalten.

  1. Der codierte Wert enthält 24 Byte.

  2. Lassen Sie uns 24 berechnen/4 * 3 => das Ergebnis 18

  3. Lassen Sie uns die Anzahl der = s am Ende des codierten Wertes zählen: In diesem Fall 1
    (wir überprüfen müssen nur die 2 letzten Bytes codierter Daten).

  4. 18 Erste (auf Schritt 2) - 1 (erhalten auf Stufe 3) erhalten wir 17

Also, wir 17 Bytes benötigen, um die Daten zu speichern.

+0

Ich frage mich, wie ich genaue Größe der unkomprimierten Größe berechnen könnte. Auf die nächste Multiplikation mit der Nummer 4 aufrunden und dann durch 3 teilen? Hmm nein. – bodacydo

+0

Sie können nicht, es sei denn, Sie analysieren die letzten Bytes zum Zählen der = ... So: Dividieren Sie durch 4, multiplizieren Sie mit 3, und subtrahieren Sie die Menge von "=". – Bacco

+0

Es ist ein bisschen schwierig für mich zu verstehen. Wären Sie in der Lage, es anhand einiger Zahlenbeispiele zu demonstrieren? Der genaue Weg von verschlüsselt (in Bytes) zurück zu uncodiert. – bodacydo

1

base64 fügt etwa ein Drittel der ursprünglichen Größe hinzu, so dass Ihre Datei mehr oder weniger .75 * 450kb groß sein sollte.

Verwandte Themen