Ini referensi masa depan untuk saya sendiri. Karena pertanyaannya adalah yang terburuk kasus , kita harus mempertimbangkan jeda baris. Sementara RFC 1421 mendefinisikan panjang garis maksimum menjadi 64 char, RFC 2045 (MIME) menyatakan akan ada 76 char dalam satu baris paling banyak.
Yang terakhir adalah apa yang telah diimplementasikan oleh perpustakaan C #. Jadi di lingkungan Windows di mana satu baris adalah 2 karakter (\ r \ n), kita mendapatkan ini:Length = Floor(Ceiling(N/3) * 4 * 78 / 76)
Catatan: Lantai adalah karena selama pengujian saya dengan C #, jika baris terakhir berakhir tepat pada 76 karakter, tidak ada garis-istirahat yang mengikuti.
Saya bisa membuktikannya dengan menjalankan kode berikut:
byte[] bytes = new byte[16 * 1024];
Console.WriteLine(Convert.ToBase64String(bytes, Base64FormattingOptions.InsertLineBreaks).Length);
Jawaban untuk 16 kBytes dikodekan ke base64 dengan garis 76-char: 22422 karakter
Asumsikan di Linux itu akan Length = Floor(Ceiling(N/3) * 4 * 77 / 76)
tetapi saya belum sempat mengujinya pada .NET core saya.