A voir également:
- Base-36 to base-10
- Base de registre - Guide
- Clé d'activation windows 10 - Guide
- Restauration systeme windows 10 - Guide
- Qwerty to azerty - Guide
- Windows 10 ne démarre pas - Guide
4 réponses
C re moi, et je pense a voir une reponse a t'apporter,
Pour passer en base 10, il suffit de prendre la première partie de ton nombre en base 36 et de le multiplier par 36^0 c'est à dire 1(pas trop dur jusqu'ici), ensuite, tu ajoute à cela la seconde partie que tu multiplie par 36^2(puissance 2) et aini de suite ...
Si ma reponse te semble bizzard vérifie avec d'autres sources, mais je pense que c'est ça, d'aprés les restes de cours d'archi dont je me rappel
Pour passer en base 10, il suffit de prendre la première partie de ton nombre en base 36 et de le multiplier par 36^0 c'est à dire 1(pas trop dur jusqu'ici), ensuite, tu ajoute à cela la seconde partie que tu multiplie par 36^2(puissance 2) et aini de suite ...
Si ma reponse te semble bizzard vérifie avec d'autres sources, mais je pense que c'est ça, d'aprés les restes de cours d'archi dont je me rappel
ps cette fonction est sensible à la casse
a est different de A
a est different de A
Pardon pour l'erreur dans l'explication pour le passage en base 10 depuis la base 36, c'est pas très grve mais bon...
ensuite, tu ajoute à cela la seconde partie que tu multiplie par 36^2(puissance 2)
En fait le second caractère est à multiplier par 36^1 donc 36 !
voila c'est corrigé, sinon le code de notre ami random a l'air tout à fait correct.
Bonne prog.
ensuite, tu ajoute à cela la seconde partie que tu multiplie par 36^2(puissance 2)
En fait le second caractère est à multiplier par 36^1 donc 36 !
voila c'est corrigé, sinon le code de notre ami random a l'air tout à fait correct.
Bonne prog.
Petit ajout juste pour la culture,
puisque tu a l'air d'avoir résolu ton problème.
Comme les chiffres utilisables pour former des codes sont au nombre de 10 caractères maxi(en contant le zéro), on utilise les lettres en leur donnant des valeurs à partir de 10 jusqu'a 35 !
A == 10 et Z == 35
voila qui devrait répondre a ton interrogation qui figure plus haut.
puisque tu a l'air d'avoir résolu ton problème.
Comme les chiffres utilisables pour former des codes sont au nombre de 10 caractères maxi(en contant le zéro), on utilise les lettres en leur donnant des valeurs à partir de 10 jusqu'a 35 !
A == 10 et Z == 35
voila qui devrait répondre a ton interrogation qui figure plus haut.
Function chgtbase(ByVal nb As Currency, base As Integer) As String
Dim repnomb As String
Dim modu As Variant
Dim divi As Currency
Do
divi = Int((nb / base))
modu = nb - (divi * base)
If modu > 9 Then modu = Chr(modu + 55)
repnomb = modu & repnomb
nb = divi
Loop Until nb < base
If nb > 9 Then
repnomb = Chr(nb + 55) & repnomb
Else
repnomb = nb & repnomb
End If
chgtbase = repnomb
End Function
Dim repnomb As String
Dim modu As Variant
Dim divi As Currency
Do
divi = Int((nb / base))
modu = nb - (divi * base)
If modu > 9 Then modu = Chr(modu + 55)
repnomb = modu & repnomb
nb = divi
Loop Until nb < base
If nb > 9 Then
repnomb = Chr(nb + 55) & repnomb
Else
repnomb = nb & repnomb
End If
chgtbase = repnomb
End Function
à titre d'xplication
ben pour comprendre le code c'est facile
prends 123 en décimal il représente
3 unités
2 dizaines soi 2*10
1 centaine 1*10*10
ton nombre base 36 est 2K3ZL79Q
le chiffre des unités est Q le code asci de Q est 81
le code asci de A est 65, et il va representer 10 dans les bases supérieures à 10 sa valeur est donc 81-55 soit 26
le chiffre suivant est 9 sa valeur est donc 9*36
puis 7 qui vaudra 7*36*36
puis L code 76-55=21*36+36*36
je continue et je fais la somme des résultats intermédiaires
ben pour comprendre le code c'est facile
prends 123 en décimal il représente
3 unités
2 dizaines soi 2*10
1 centaine 1*10*10
ton nombre base 36 est 2K3ZL79Q
le chiffre des unités est Q le code asci de Q est 81
le code asci de A est 65, et il va representer 10 dans les bases supérieures à 10 sa valeur est donc 81-55 soit 26
le chiffre suivant est 9 sa valeur est donc 9*36
puis 7 qui vaudra 7*36*36
puis L code 76-55=21*36+36*36
je continue et je fais la somme des résultats intermédiaires
C'est bien des gens comme ça!
Dans mon exemple, le code en base 36 est le suivant :
2K3ZL79Q
Or d'après les données qui sont liées, en base 10 ça donne :
200505149198
Tu y comprends quelque chose?
Car tous les codes que j'ai trouvé ne marchent pas avec les caractères alphanumériques .....
Je vais bien réussir à te poser une colle...
Function dbase(ByVal nb As String, base As Variant) As String
Dim boucle As Integer
Dim cara As Variant
Dim rep As Variant
For boucle = 1 To Len(nb)
cara = Mid(nb, boucle, 1)
If cara > 9 Then
cara = Asc(cara) - 55
End If
cara = cara * (base ^ (Len(nb) - boucle))
rep = rep + cara
Next boucle
dbase = rep
End Function
tu peux essayer avec dbase("MAMAN"36)