Estoy tratando de predecir la representación de la cadena de tamaño de una matriz de bytes codificada en base64.Predecir el tamaño de byte de un byte codificado en base64 []
He llegado con la siguiente fórmula, sin embargo, la longitud de la actual encodedString
es 4 más grande que la base64EncodedSize
.
La idea general aquí es calcular/predecir cuál sería el tamaño de cadena codificado para un byte[]
dado. Preferiría no convertir el byte[
] en una cadena base 64 solo para determinar su longitud.
FileInfo pdfFile = new FileInfo(@"C:\TEMP\1.pdf");
long originalSizeInBytes = pdfFile.Length;
String encodedString = Convert.ToBase64String(File.ReadAllBytes(pdfFile.FullName));
long base64EncodedSize = (originalSizeInBytes/3) * 4;
----------------------------------------------------------------------------------
- Results -
-----------------------------------------------------------------------------------
originalSizeInBytes 913663 long
base64EncodedSize 1218216 long
encodedString.Length 1218220 int
base64EncodedSize 1218216 long
encodedString.Length - base64EncodedSize 4 long
Oh querido. ¿Entero dividido antes de multiplicarse? ¿Y te preguntas por qué el resultado es demasiado pequeño? – adelphus
Guau, no puedo creer que no haya notado eso. Siempre son las cosas simples. :) Gracias. –