Подтвердить что ты не робот

Предсказать размер байта байт-кодированного base64 []

Я пытаюсь предсказать строковое представление размера байтового массива с кодировкой base64.

Я придумал приведенную ниже формулу, однако длина фактического encodedString на 4 больше, чем base64EncodedSize.

Вся идея здесь состоит в том, чтобы вычислить/предсказать, какой размер закодированной строки будет для данного byte[]. Я бы предпочел не преобразовывать byte[] в базовую строку 64, чтобы определить ее длину.

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
4b9b3361

Ответ 1

Это будет

long base64EncodedSize = 4 * (int)Math.Ceiling(originalSizeInBytes / 3.0);