Как вы преобразуете биты в другой алфавит?
-
29-09-2020 - |
Вопрос
Я забыл, как это сделать.Как узнать, какие требования к 128-битной строке с использованием определенного алфавита?
Что сказать, я хочу создать uuid (128-битное) значение, используя только 10 номеров для алфавита.Сколько мне нужно номера, а каково общее уравнение, поэтому я могу понять это для любого алфавита любого размера?
Что такое уравнение для любого n-битного значения с любым алфавитом x-буквы?
То, как я это делаю, должен угадать и медленно итерации, пока не прибуду по тесному номеру.Для полномочий 10 легко:
Math.pow(2, 128)
3.402823669209385e+38
Math.pow(10, 39)
1e+39
.
для других чисел, требуется немного больше угадывания.Хотел бы знать уравнение для этого.
Решение
Для оценки количества десятичных цифр, необходимых для представления $ 128 $ Битовый номер, который вы используете логарифмы для базы $ 10 $ :
$ 128 \ times \ log_ {10} (2) \ Приблизительно 38.53 $
Так что вам нужно $ 39 $ Десятичные цифры для представления $ 128 $ Битовое число.
в общем, для «алфавита» с $ n $ символы, которые необходимо найти значение $ 128 \Times \ log_n (2) $ а затем округляйте это до следующего целого числа.