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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a cs.stackexchange
scroll top