Y = base64 (X) где X является целым числом - это Y буквенно-цифровой? - PullRequest
1 голос
/ 20 февраля 2011

Дополнительные сведения:

  • X - любое положительное целое число 6 цифр или менее.
  • X дополняется нулями слева, чтобы сохранить ширину 6.

Пожалуйста, объясните свой ответ:)

(Это может быть лучше на сайте Math, но решил, что это включает в себя функции программирования)

1 Ответ

3 голосов
/ 20 февраля 2011

Очень полезна картинка из немецкой статьи в Википедии :

enter image description here

Вы видите, что 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 значений вообще возможно?».

...