Очень полезна картинка из немецкой статьи в Википедии :
Вы видите, что 6 последовательных битов из исходных байтов генерируют значение Base64.Чтобы сгенерировать +
или /
(коды 62 и 63), вам понадобятся битовые строки 111110
и 111111
, поэтому необходимо установить как минимум 5 последовательных битов.
Однако посмотрите на ASCII.коды для 0
... 9
:
00110000
00110001
00110010
00110011
00110100
00110101
00110110
00110111
00111000
00111001
Независимо от того, как вы объедините шесть из них, будет установлено не более 3 последовательных битов.Таким образом, невозможно сгенерировать строку Base64, содержащую +
или /
, таким образом, Y всегда будет буквенно-цифровым.
РЕДАКТИРОВАТЬ: Фактически, вы даже можете исключить другие значения Base64, например 000010
(C
), так что это приводит к хорошим дополнительным вопросам / головоломкам, таким как «Сколько из 64 значений вообще возможно?».