Интернет решения от доктора Боба - Swart Bob
Интернет решения от доктора Боба - Swart Bob — читать книгу онлайн
Настройте размер и шрифт текста, включите тёмную тему для удобного чтения. Переходить между страницами можно стрелками внизу или сочетанием Ctrl + ← / →.
Заметим, что в новой версии этих процедур используется глобальная переменная XXCode логического типа для определения типа кодирования.
1.1.3. Base64
Алгоритм кодирования Base64 отличается от алгоритмов UUencode и XXencode тем, что в нем не используется первый символ как индикатор длины. Общее то что используется алгоритм преобразования триплетов в квартеты с помощью 64 байтной таблицы преобразования.
| Набор символов Base64 | |||||||
|---|---|---|---|---|---|---|---|
| 0 A | 8 I | 16 Q | 24 Y | 32 g | 40 o | 48 w | 56 4 |
| 1 B | 9 J | 17 R | 25 Z | 33 h | 41 p | 49 x | 57 5 |
| 2 C | 10 K | 18 S | 26 a | 34 I | 42 q | 50 y | 58 6 |
| 3 D | 11 L | 19 T | 27 b | 35 j | 43 r | 51 z | 59 7 |
| 4 E | 12 M | 20 U | 28 c | 36 k | 44 s | 52 0 | 60 8 |
| 5 F | 13 N | 21 V | 29 d | 37 l | 45 t | 53 1 | 61 9 |
| 6 G | 14 O | 22 W | 30 e | 38 m | 46 u | 54 2 | 62 + |
| 7 H | 15 P | 23 X | 31 f | 39 n | 47 v | 55 3 | 63 / |
Подобно набору символов XXencode, набор символов Base64 не является подмножеством набора символов ASCII.
Это означает, что мы должны добавить массив преобразования в набор символов Base64 и также преобразовать процедуры Triplet2Kwartet и Kwartet2Triplet для поддержки данного алгоритма: