Comment convertissez-vous des bits dans un alphabet différent?
-
29-09-2020 - |
Question
J'ai oublié comment faire cela.Comment puis-je déterminer quelles sont les exigences pour une chaîne de 128 bits utilisant un certain alphabet?
C'est-à-dire que je veux générer une valeur UUID (128 bits), en utilisant uniquement les 10 numéros de l'alphabet.Combien de chiffres ai-je besoin et quelle est l'équation générale afin que je puisse comprendre cela pour n'importe quel alphabet de toute taille?
Quelle est l'équation de toute valeur N-bit avec un alphabet X-Letter?
La façon dont je le fais est de deviner et d'itération lentement jusqu'à ce que j'arrive à un numéro de proche.Pour les pouvoirs de 10, c'est facile:
Math.pow(2, 128)
3.402823669209385e+38
Math.pow(10, 39)
1e+39
Pour d'autres numéros, il faut un peu plus de devinement.Aimerait connaître l'équation pour cela.
La solution
Pour estimer le nombre de chiffres décimaux nécessaires à la représentation d'un $ 128 $ Numéro de bit Vous utilisez des logarithmes sur la base $ 10 $ :
128 $ \ fois \ log_ {10} (2) \ environ 38.53 $
vous avez donc besoin 39 $ $ chiffres décimaux pour représenter une 128 $
Numéro de bit.dans un général, pour un "alphabet" avec $ N $ symboles Vous devez trouver la valeur de 128 $Times \ log_n (2) $ puis autour du numéro entier suivant.