3-битное кодирование = Восьмеричное; 4-битное кодирование = шестнадцатеричное; 5-битная кодировка =? - PullRequest
0 голосов
/ 27 апреля 2011

Существует ли кодировка, которая использует 5 битов в качестве одной группы для кодирования двоичных данных?

AZ содержит 26 символов, а 0-9 - 10 символов.Всего 5 символов достаточно для 5-битной кодировки (только 32 комбинации).

Почему бы не использовать 5-битную кодировку вместо восьмеричной или шестнадцатеричной?

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

Как упоминалось в комментарии @ S.Lott, base64 (6-бит) часто используется для кодирования двоичных данных в виде текста, когда важна компактность.

В целях отладки (например, шестнадцатеричные дампы) мы используем шестнадцатеричный формат, поскольку размер байта делится на 4 бита равномерно, поэтому каждый байт имеет одно уникальное шестнадцатеричное представление из двух цифр, независимо от того, какие другие байты находятся вокруг него. Это позволяет легко «видеть» отдельные байты при просмотре шестнадцатеричного дампа, а также относительно легко мысленно конвертировать между 8-битным двоичным и 2-значным шестнадцатеричным. (В base64 нет соответствия 1: 1 между байтами и закодированными символами; один и тот же байт может давать разные символы в зависимости от его положения и значений других смежных байтов.)

1 голос
/ 10 августа 2013

Да.Это Base32 .Возможно, имя будет Triacontakaidecimal , но его слишком долго и трудно запомнить, поэтому люди просто называют его base 32 .Точно так же есть также Base64 для групп из 6 битов

Base32 гораздо менее распространен в использовании, чем шестнадцатеричный и base64, потому что он тратит много места по сравнению с base64 и использует нечетное количество сравниваемых битв шестнадцатеричный (который делится на 8, 16, 32 или 64).6 также является четным числом, следовательно, будет лучше, чем 5 на двоичном компьютере

0 голосов
/ 27 апреля 2011

Конечно, почему бы и нет:

Welcome to Clozure Common Lisp Version 1.7-dev-r14614M-trunk  (DarwinX8664)!
? (let ((*print-base* 32)) (print 1234567))
15LK7 
1234567
? (let ((*print-base* 32)) (print (expt 45 19)))
KAD5A5KM53ADJVMPNTHPL 
25765451768359987049102783203125
? 
...