¿Cómo convierte los bits en un alfabeto diferente?
-
29-09-2020 - |
Pregunta
He olvidado cómo hacer esto.¿Cómo puedo entender cuáles son los requisitos para una cadena de 128 bits usando un cierto alfabeto?
es decir, quiero generar un valor uuid (128 bits), usando solo los 10 números para el alfabeto.¿Cuántos números necesito, y cuál es la ecuación general para que pueda resolver esto para cualquier alfabeto de cualquier tamaño?
¿Cuál es la ecuación para cualquier valor N-bit con cualquier alfabeto de X-letra?
La forma en que lo hago es adivinar y iterar lentamente hasta que llegue a un número cercano.Para poderes de 10 es fácil:
Math.pow(2, 128)
3.402823669209385e+38
Math.pow(10, 39)
1e+39
Para otros números, se necesita un poco más de adivinanzas.Me encantaría saber la ecuación para esto.
Solución
Para estimar el número de dígitos decimales necesarios para representar un número de $ 128 $ número de bits que utiliza logaritmos para basar $ 10 $ :
$ 128 \ veces \ log_ {10} (2) \ aprox 38.53 $
Para que necesite $ 39 $ Dígitos decimales para representar un $ 128 $ número de bits.
En un general, para un "alfabeto" con $ n $ Symbols que necesita para encontrar el valor de $ 128 \veces \ log_n (2) $ y luego redondea esto hasta el siguiente número entero.