Como converter os bits em um alfabeto latino?
-
29-09-2020 - |
Pergunta
Eu tenho esquecido de como fazer isso.Como faço para descobrir quais são os requisitos para uma de 128-bit string usando um determinado alfabeto?
Que está a dizer, eu quero gerar um UUID (128 bits) valor, utilizando-se apenas a 10 números para o alfabeto.Quantos números eu preciso, e o que é a equação geral para que eu possa descobrir isso por qualquer alfabeto de qualquer tamanho?
Que é a equação para qualquer n bits de valor com qualquer x-letra do alfabeto?
A maneira que eu faço é para adivinhar e, lentamente, iterar até eu chegar em um próximo número.Para potências de 10, é fácil:
Math.pow(2, 128)
3.402823669209385e+38
Math.pow(10, 39)
1e+39
Para outros números, é preciso um pouco mais de adivinhação.Gostaria de saber a equação para isso.
Solução
Para estimar o número de casas decimais necessárias para representar um $128$ número de bits de utilizar logaritmos de base $10$:
$128 imes \log_{10}(2) \approx 38.53$
então você precisa $39$ dígitos decimais para representar um $128$ número de bits.
Em geral, para um "alfabeto" com $n$ símbolos que você precisa para encontrar o valor de $128 imes \log_n (2)$ e, em seguida, volta para cima para o número inteiro seguinte.