Если сервер получил строку base64 и хотел проверить его длину до преобразования, скажем, он всегда хотел, чтобы конечный массив байтов был 16 КБ. Насколько большой может быть массив байтов размером 16 Кбайт при преобразовании в строку Base64 (при условии, что один байт на символ)?Base64: Какое худшее увеличение использования пространства?
ответ
Base64 кодирует каждый набор из трех байтов в четыре байта. Кроме того, выход дополняется всегда кратным четырем.
Это означает, что размер представления базовой 64 строки размера п является:
ceil(n/3) * 4
Таким образом, для массива 16kb, представление базового 64 будет CEIL (16 * 1024/3) * 4 = 21848 байтов ~ ~ 21,8 КБ.
A приблизительный пример: размер данных будет увеличен до 4/3 оригинала.
16kb - 131 072 бит. Base64 упаковывает 24-битные буферы в четыре 6-битных символа за штуку, поэтому у вас будет 5,462 * 4 = 21,848 байт.
От Wikipedia
Следует отметить, что данный входной сигнал из п байтов, выход будет (п + 2 - ((п + 2)% 3))/3 * 4 байта долго, так что количество выходных байтов на каждый входной байт сходится к 4/3 или 1.33333 для больших n.
Так что 16kb * 4/3 дает очень мало над 21,3 'kb, или 21848 байт, если быть точным.
Надеется, что это помогает
Поскольку речь шла о худшем возможном увеличении, я должен добавить, что, как правило, разрывы строк в вокруг каждых 80 символов. Это означает, что если вы сохраняете закодированные данные base64 в текстовый файл в Windows, он добавит 2 байта в 1 байт Linux для каждой строки.
Увеличение от фактического кодирования описано выше.
Не является ли крайним случаем, что 1 байт источника становится 4 base64 байтами, поэтому увеличение 4 раза? Любой более длинный исходный материал получает лучшее соотношение, пока, как говорят другие, он асимптотически приближается к 1,333 ... – Olie
- 1. Какое худшее время работы для данного алгоритма
- 2. Какое худшее время работы Hashing с цепочкой?
- 3. Какое худшее может произойти с (правда)?
- 4. Какое худшее время для этого метода?
- 5. Увеличение пространства перменья
- 6. Какое худшее насилие вы видели в синтаксисе LINQ?
- 7. Какое худшее время для этого кода O (R * C)?
- 8. Увеличение использования дискового пространства во время RedShift нагрузок
- 9. Base64 Оптимизация пространства памяти MySQL
- 10. Увеличение использования ЦП
- 11. Увеличение используемого пространства при перебалансировке кластера Cassandra
- 12. Увеличение дискового пространства экземпляра AW2 EC2 ubuntu
- 13. Увеличение пространства между барами в ggplot
- 14. Увеличение пространства символов в шрифтах FPDF
- 15. Увеличение кучи пространства в Eclipse: (java.lang.OutOfMemoryError)
- 16. Увеличение внутреннего пространства хранения на эмуляторе Android
- 17. Увеличение пространства между treeitems в дереве gwt
- 18. Увеличение пространства между графиками в rmarkdown
- 19. Увеличение дискового пространства на панели инструментов Docker
- 20. Увеличение использования процессора в AIX
- 21. Увеличение использования памяти в sqlite3?
- 22. Увеличение использования CPU на C++
- 23. Увеличение использования памяти в MATLAB
- 24. TSP Эвристики - Худшее отношение случая
- 25. Увеличение пространства между текстовыми полями с помощью CSS
- 26. Какое преимущество использования INNER JOIN?
- 27. Какое худшее время выполнения для наиболее эффективного алгоритма построения дерева хаффмана?
- 28. Скрыть UILabel без использования какого-либо пространства
- 29. Оптимизация использования дискового пространства Neo4j
- 30. Обзор использования дискового пространства git
Если n является целым числом на типизированном языке, то было бы немного быстрее избежать целого числа <--> float casts и вычислять '((n + 2)/3) * 4' –
Нужно ли добавить 2 к длина или нет? – vIceBerg
@vIceBerg. Это зависит от того, используете ли вы 'ceil' с номерами' float' или просто 'int'. (и не 'ceil') –