Đây là một tài liệu tham khảo trong tương lai cho bản thân tôi. Vì câu hỏi là trong trường hợp xấu nhất , chúng ta nên tính đến ngắt dòng. Trong khi RFC 1421 định nghĩa độ dài dòng tối đa là 64 char, RFC 2045 (MIME) nói rằng có tối đa 76 char trong một dòng.
Thứ hai là những gì thư viện C # đã thực hiện. Vì vậy, trong môi trường Windows có ngắt dòng là 2 ký tự (\ r \ n), chúng ta sẽ nhận được điều này:Length = Floor(Ceiling(N/3) * 4 * 78 / 76)
Lưu ý: Sàn là bởi vì trong quá trình thử nghiệm của tôi với C #, nếu dòng cuối cùng kết thúc ở đúng 76 ký tự, không có ngắt dòng tiếp theo.
Tôi có thể chứng minh điều đó bằng cách chạy đoạn mã sau:
byte[] bytes = new byte[16 * 1024];
Console.WriteLine(Convert.ToBase64String(bytes, Base64FormattingOptions.InsertLineBreaks).Length);
Câu trả lời cho 16 kBytes được mã hóa thành base64 với 76 dòng char: 22422 chars
Giả sử trong Linux là như Length = Floor(Ceiling(N/3) * 4 * 77 / 76)
vậy nhưng tôi chưa kịp thử nghiệm nó trên lõi .NET của mình.