Це майбутня довідка для себе. Оскільки питання йде про найгірший випадок, ми повинні враховувати перерви у рядках. У той час як RFC 1421 визначає максимальну довжину лінії до 64 знаків, RFC 2045 (MIME) стверджує, що в одному рядку може бути не більше 76 знаків.
Останнє - це те, що впроваджена бібліотека C #. Отже, в середовищі Windows, де розрив рядка становить 2 знаки (\ r \ n), ми отримуємо це:Length = Floor(Ceiling(N/3) * 4 * 78 / 76)
Примітка. Підлогове покриття полягає в тому, що під час мого тестування на C #, якщо останній рядок закінчується рівно на 76 символів, жодного розриву рядків не слід.
Я можу це довести, виконавши наступний код:
byte[] bytes = new byte[16 * 1024];
Console.WriteLine(Convert.ToBase64String(bytes, Base64FormattingOptions.InsertLineBreaks).Length);
Відповідь на 16 кБайт, закодованих до base64, 76-знаковими лініями: 22422 символів
Припустимо, в Linux це було б, Length = Floor(Ceiling(N/3) * 4 * 77 / 76)
але я ще не обійшов його перевірити на своєму ядрі .NET.