Base32 - это базовая -32 система счисления. Он использует набор из 32 цифр, каждая из которых может быть представлена 5 битами (2). Один из способов представления чисел Base32 в формате , удобочитаемом человеком - это использование стандартного набора из 32 символов, например, двадцати шести заглавных букв A – Z и цифр 2–7. Однако многие другие варианты используются в разных контекстах.
Это пример числа Base32, представленного с использованием ранее описанного набора из 32 символов (IPFS CIDv1 в кодировке верхнего регистра Base32): Base32 имеет ряд преимуществ перед Base64 : Base32 также имеет преимущества перед шестнадцатеричным / Base16 : Представление Base32 занимает примерно на 20% больше места, чем Base64. Кроме того, поскольку он кодирует от 5 байтов до 8 символов (а не от 3 байтов до 4 символов), заполнение до 8-значной границы создает большую нагрузку на короткие сообщения. Наиболее широко используемый алфавит Base32 определен в RFC 4648. Он использует алфавит из A –Z, за которым следуют 2 –7. 0 и 1 пропускаются из-за их сходства с буквами O и I (таким образом, "2" фактически имеет десятичное значение 26 ). В некоторых случаях заполнение не требуется или не используется (заполнение можно определить по длине строки по модулю 8). RFC 4648 указывает, что необходимо использовать заполнение, если в спецификации стандарта, ссылающейся на RFC, явно не указано иное. Исключение заполнения полезно при использовании данных в кодировке base32 в токенах URL или именах файлов, где символ заполнения может представлять проблему. При изменении алфавита Base32 все альтернативные стандарты имеют аналогичные комбинации буквенно-цифровых символов. z-base-32 - это кодировка Base32, разработанная для упрощения использования человеком и большей компактности. Он включает 1, 8 и 9, но исключает l, v и 2. Он также переставляет алфавит, чтобы более простые символы встречались чаще. Он компактно кодирует битовые строки, длина которых в битах не кратна 8, и опускает завершающие символы заполнения. z-base-32 использовался в проекте с открытым исходным кодом Mnet, а в настоящее время используется в протоколе ZRTP Фила Циммерманна и в Открытый проект Tahoe-LAFS. Другой альтернативный дизайн для Base32 создан Дугласом Крокфордом, который предлагает использовать дополнительные символы для контрольной суммы. Он исключает буквы I, L и O, чтобы не путать их с цифрами. Он также исключает букву U, чтобы уменьшить вероятность случайной непристойности. Библиотеки для кодирования двоичных данных в Base32 Крокфорда доступны на разных языках. Программисты, работавшие над Electrologica X1 <, использовали более раннюю форму записи с основанием 32. 16>для обозначения машинных адресов. «Цифры» были представлены как десятичные числа от 0 до 31. Например, 12-16 будет представлять машинный адрес 400 (= 12 * 32 + 16). Triacontakaidecimal - это еще один альтернативный дизайн для Base 32, который расширяет шестнадцатеричный более естественным образом и был впервые предложен Кристианом Ланкто, программистом, работающим в Программное обеспечение Sage в письме в журнал доктора Добба в марте 1999 г. в качестве предлагаемого решения для устранения ошибки 2000 года, названного «Double Hex». Эта версия описывалась в RFC 2938 под названием «Base-32». RFC 4648, признавая существующее использование этой версии в NSEC3, ссылается на нее как на base32hex и не рекомендует маркировать ее как «base32». Как и в шестнадцатеричном формате, используются цифры от 0 до 9, за которыми следуют буквы алфавита. Это соответствует цифрам, используемым функцией JavaScript В отличие от многих других систем счисления с основанием 32, triacontakaidecimal является смежные и содержат символы, которые могут визуально противоречить друг другу. С помощью правого шрифта можно визуально различать 0, O и 1, I. Другие шрифты не подходят, потому что контекст, который обычно предоставляет английский, не обеспечивается системой обозначений, выражающей числа. Однако выбор шрифта не контролируется нотацией или кодировкой, поэтому рискованно предполагать, что будет использоваться различимый шрифт. См. алгоритм Geohash, используемый для представления значений широты и долготы одним положительным целым числом (с чередованием битов). В представлении Geohash в формате base32 используются все десятичные цифры (0-9) и почти строчные буквы алфавита, за исключением букв «a», «i», «l», «o», как показано на следующей карте символов: До того, как NVRAM стал универсальным, несколько видеоигр для Платформы Nintendo использовали базовые 32 числа для паролей. Эти системы пропускают гласные, чтобы игра случайно не присвоила нечестный пароль. Таким образом, символы, как правило, представляют собой незначительную вариацию следующего набора: 0–9, B, C, D, F, G, H, J, K, L, M, N, P, Q, R, S, T, V, W, X, Y, Z и некоторые знаки препинания. Известно, что такая система используется в следующих играх: Mario Is Missing!, Mario's Time Machine, Tetris Blast и The Lord of the Rings (Super NES). Безопасный по словам алфавит Base32 является расширением открытого кода местоположения Base20 алфавита. В этом алфавите используются 8 цифровых цифр и 12 буквенных цифр без учета регистра, выбранных во избежание случайного образования слов. Если рассматривать алфавит как чувствительный к регистру, получается набор из 32 (8 + 12 + 12) цифр. Base32 - это нотация для кодирования произвольных байтовых данных с использованием ограниченного набора символы, которые могут быть удобно использованы людьми и обработаны компьютерами. Base32 состоит из набора символов, состоящего из 32 различных символов, а также алгоритма кодирования произвольных последовательностей 8-битных байтов в алфавит Base32. Поскольку для представления каждого 8-битного входного байта требуется более одного 5-битного символа Base32, он также определяет требования к допустимой длине строк Base32 (которые должны быть кратны 40 битам). Напротив, тесно связанная система Base64 использует набор из 64 символов. Доступны реализации Base32 на C / C ++, Perl, Java, JavaScript Python, Go и Ruby.BAFYBEICZSSCDSBS7FFQZ55ASQDF3SMV6KLCW3GOFSZVWLYARCI47BGF354 <>1 Преимущества
Преимущества
Недостатки
Base64 Base32 8-битная 133% 160% 7-битный 117% 140% RFC 4648 алфавит Base32
Значение Символ Значение Символ Значение Символ Значение Символ 0 A 8 I 16 Q 24 Y 1 B 9 J 17 R 25 Z 2 C 10 K 18 S 26 2 3 D 11 L 19 T 27 3 4 E 12 M 20 U 28 4 5 F 13 N 21 V 29 5 6 G 14 O 22 W 30 6 7 H 15 P 23 X 31 7 заполнение = Альтернативные версии
z-base-32
Значение Символ Значение Символ Значение Символ Значение Symbol 0 y 8 e 16 o 24 a 1 b 9 j 17 t 25 3 2 n 10 k 18 1 26 4 3 d 11 m 19 u 27 5 4 r 12 c 20 w 28 h 5 f 13 p 21 i 29 7 6 g 14 q 22 s 30 6 7 8 15 x 23 z 31 9 Base32 Крокфорда
Значение Цифра кодирования Цифра декодирования Значение Цифра кодирования Цифра декодирования 0 0 0 o O 16 G g G 1 1 1 i I l L 17 H h H 2 2 2 18 J j J 3 3 3 19 K k K 4 4 4 20 M m M 5 5 5 21 N n N 6 6 6 22 P p P 7 7 7 23 Q q Q 8 8 8 24 R r R 9 9 9 25 S s S 10 A a A 26 T t T 11 B b B 27 V v V 12 C c C 28 W w W 13 D d D 29 X x X 14 E e E 30 Y y Y 15 F f F 31 Z z Z Electrologica
base32hex
parseInt ()
и конструктором Python int ()
, когда база больше 10 ( например, 16 или 32). Он также сохраняет шестнадцатеричное свойство сохранения порядка побитовой сортировки представленных данных, в отличие от RFC 4648 base-32 или base-64.Значение Символ Значение Символ Значение Символ Значение Символ 0 0 9 9 18 I 27 R 1 1 10 A 19 J 28 S 2 2 11 B 20 K 29 T 3 3 12 C 21 L 30 U 4 4 13 D 22 M 31 V 5 5 14 E 23 N 6 6 15 F 24 O 7 7 16 G 25 P 8 8 17 H 26 Q pad = Geohash
Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Base 32 0 1 2 3 4 5 6 7 8 9 b c d e f g Decimal 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Base 32 h j k m n p q r s t u v w x y z Видеоигры
Безопасный по словам алфавит
Десятичный 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Базовый 32 2 3 4 5 6 7 8 9 C F G H J M P Q Десятичный 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Базовый 32 R V W X c f g h j m p q r v w x Программный
См. Также
"Полномочия двух" связанных баз: Другие базы: Применение base32: Ссылки