Если сервер получил строку base64 и хотел проверить ее длину перед преобразованием, скажем, он всегда хотел, чтобы конечный байтовый массив составлял 16 КБ. Насколько большим может быть массив байтов 16 КБ при преобразовании в строку Base64 (при условии, что по одному байту на символ)?
168
ceil
сfloat
цифрами или просто сint
цифрами. (и нетceil
)Из Википедии
Таким образом, 16 КБ * 4/3 дает очень немного больше 21,3 'КБ, или 21848 байт, если быть точным.
Надеюсь это поможет
источник
16 КБ - 131 072 бита. Base64 упаковывает 24-битные буферы в четыре 6-битных символа каждый, поэтому у вас будет 5,462 * 4 = 21,848 байт.
источник
Поскольку вопрос касался наихудшего возможного увеличения, я должен добавить, что обычно каждые 80 символов существуют разрывы строк. Это означает, что если вы сохраняете данные в кодировке base64 в текстовый файл в Windows, он добавит 2 байта, в Linux - 1 байт для каждой строки.
Увеличение от фактического кодирования было описано выше.
источник
Это будущая ссылка для меня. Поскольку вопрос наихудший , мы должны учитывать разрывы строк. В то время как RFC 1421 определяет максимальную длину строки в 64 символа, в RFC 2045 (MIME) говорится, что в одной строке должно быть не более 76 символов.
Последнее - то, что реализовала библиотека C #. Таким образом, в среде Windows, где разрыв строки составляет 2 символа (\ r \ n), мы получаем это:
Length = Floor(Ceiling(N/3) * 4 * 78 / 76)
Примечание: Flooring - потому что во время моего теста с C #, если последняя строка заканчивается ровно 76 символами, перенос строки не следует.
Я могу доказать это, запустив следующий код:
Ответ для 16 кБайт, закодированных в base64 с 76-символьными строками: 22422 символа
Предположим, что в Linux это было бы,
Length = Floor(Ceiling(N/3) * 4 * 77 / 76)
но я еще не удосужился протестировать его на своем .NET ядре.источник