base64 для уменьшения цифр, необходимых для кодирования десятичного числа - PullRequest
1 голос
/ 04 июня 2011

Мне нужно управлять идентификатором некоторых объектов.Мне нужно, чтобы эти ID были уникальными.У меня есть ограничение, что эти идентификаторы не могут быть слишком длинными с точки зрения требуемых цифр

Является ли base64 хорошим способом уменьшить количество цифр, необходимых для кодирования идентификатора?

РЕДАКТИРОВАТЬ:

langage : c++
data type : integer , then convert in a std::string

Ответы [ 3 ]

1 голос
/ 04 июня 2011

Каждый символ в Base64 может представлять 6 бит, поэтому разделите длину идентификатора на 6, чтобы увидеть, сколько символов будет. Двоичные данные имеют размер 8 бит на байт, поэтому они всегда будут короче, но не все байты будут доступны для чтения.

Base64 сделает ID читаемым, но все равно не будет хорошо, если идентификатор нужно будет вводить вручную, как ключ. Для этого вы захотите еще больше ограничить набор символов.

1 голос
/ 01 июня 2012

Если вам важна только длина выходной строки, а не фактический размер байта. Затем путем преобразования десятичной числовой системы (основание 10) в любую числовую систему с основанием выше 10 выходная строка будет короче посмотрите пример здесь http://www.translatorscafe.com/cafe/units-converter/numbers/calculator/octal-to-decimal/

например в их случае десятичный 9999999999 <- 10 символов в базе 32 числовой системы будет 4LDQPDR <- 7 символов длиной </p>

с до 95 печатных символов ascii, которые вы можете использовать самостоятельно Числовая система Base 95 и получить еще более короткую строку

использовал этот подход в одном из моих проектов, и этого было достаточно, чтобы сжать "длинные" числовые идентификаторы в полях коротких строк

1 голос
/ 04 июня 2011

Base64 - хороший способ переноса двоичных данных через ASCII. Обычно это не уменьшает размер чего-либо. По моему опыту это увеличивает его на 66% 33% (спасибо за исправление).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...