Предсказать размер байта байта в кодировке base64 [] - PullRequest
18 голосов
/ 12 марта 2012

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

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

Вся идея здесь в том, чтобы вычислить / предсказать, каким будет размер кодированной строки для данного byte[].Я бы предпочел не преобразовывать byte[] в строку base 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

1 Ответ

26 голосов
/ 12 марта 2012

Это будет

long base64EncodedSize = 4 * (int)Math.Ceiling(originalSizeInBytes / 3.0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...