... эти символы заполнения должны тогда Почему для кодирования base64 требуется заполнение, если длина ввода не делится на 3? Цитата из Википедии: ... эти символы заполнения должны быть отброшены при декодировании ...
... эти символы заполнения должны тогда Почему для кодирования base64 требуется заполнение, если длина ввода не делится на 3? Цитата из Википедии: ... эти символы заполнения должны быть отброшены при декодировании ...
Возможный дубликат :
Почему кодировка base64 требует заполнения, если длина ввода не делится на 3?
Цитата Википедия :
... эти символы заполнения должны тогда
быть отброшенным при декодировании, но все же
позволяют рассчитать эффективный
длина незакодированного текста, когда его
входная двоичная длина не будет
кратно 3 байтам. ...
Но вычисление длины необработанных данных может быть легко выполнено, даже если удалить символ заполнения.
| Encoded
|--------------------------------------
Raw Size | Total Size | Real Size | Padding Size
1 | 4 | 2 | 2
2 | 4 | 3 | 1
3 | 4 | 4 | 0
4 | 8 | 6 | 2
5 | 8 | 7 | 1
6 | 8 | 8 | 0
7 | 12 | 10 | 2
8 | 12 | 11 | 1
9 | 12 | 12 | 0
10 | 16 | 14 | 2
.
.
.
Итак, учитывая реальный кодированный размер (третий столбец), вы всегда можете правильно угадать, какой будет размер с заполнением:
PaddedSize = 4 * Ceil (RealSize / 4)
Так что теоретически в заполнении не было необходимости. С этим справился бы алгоритм. Поскольку кодировка Base64 является популярным отраслевым стандартом, она используется во многих приложениях и устройствах. Они выиграли бы от уменьшенного размера кодировки. Возникает вопрос, почему заполнение используется в кодировке Base64?