longitud - Base64: ¿Cuál es el peor aumento posible en el uso del espacio?
pdf to base64 (4)
16kb es 131,072 bits. Base64 empaqueta búferes de 24 bits en cuatro caracteres de 6 bits cada uno, por lo que tendría 5,462 * 4 = 21,848 bytes.
Si un servidor recibió una cadena de base64 y quería verificar su longitud antes de convertirla, digamos que quería permitir siempre que la matriz de bytes final sea de 16 KB. ¿Qué tamaño podría tener una matriz de bytes de 16 KB cuando se convierte en una cadena Base64 (suponiendo un byte por carácter)?
Base64 codifica cada conjunto de tres bytes en cuatro bytes. Además, la salida está acolchada para que siempre sea un múltiplo de cuatro.
Esto significa que el tamaño de la representación de base 64 de una cadena de tamaño n es:
ceil(n / 3) * 4
Entonces, para una matriz de 16kB, la representación de base 64 estará ceil (16 * 1024/3) * 4 = 21848 bytes de longitud ~ = 21.8kB.
Una aproximación aproximada sería que el tamaño de los datos aumenta a 4/3 del original.
Como la pregunta era sobre el peor aumento posible, debo agregar que normalmente hay saltos de línea alrededor de cada 80 caracteres. Esto significa que si está guardando datos codificados en base64 en un archivo de texto en Windows agregará 2 bytes, en 1 byte de Linux para cada línea.
El aumento de la codificación real se ha descrito anteriormente.
De Wikipedia
Tenga en cuenta que dada una entrada de n bytes, la salida será (n + 2 - ((n + 2)% 3)) / 3 * 4 bytes de largo, de modo que la cantidad de bytes de salida por byte de entrada converja a 4/3 o 1.33333 para n grande.
Entonces 16kb * 4/3 da muy poco más de 21.3 ''kb, o 21848 bytes, para ser exactos.
Espero que esto ayude