De décimal en ... toutes les bases plus petites que 35

Contenu du snippet

Mettre 3 TextBox :
  • nombre
  • base
  • result

Source / Exemple :


Private Sub base_Change()
If base > 35 Then base = 35 
If base < 2 Then base = 2
End Sub

Private Sub Command1_Click()
Dim tmp, tmp2 As Long
tmp = nombre 
result = ""
Do Until nombre < 1 ' jusqu à ce que nombre soit plus petit que 1
tmp2 = nombre Mod base ' reste de la division de nombre par base dans tmp2
If tmp2 > 9 Then ' si tmp2 est plus grand que 9 alors on écrit avec des lettres...
result = Chr$(65 - 10 + tmp2) + result
Else
result = LTrim$(Str$(tmp2)) + result
End If
nombre = (nombre - (nombre Mod base)) / base ' on soustrait le reste avant de diviser par la base puis on divise par la base (donc le resultat est entier)
Loop
nombre = tmp
End Sub

Conclusion :


Comment ca marche ?
Prenons 21 et convertisson le en base 2...

1) 21/2=pas entier !
donc (21-1)/2=10
resultat==>[1]

2) 10/2=5
resultat==>[01]

3) 5/2=pas entier !
donc (5-1)/2=2
resultat==>[101]

4) 2/2=1
resultat==>[0101]

5) 1-1=0
resultat==>[10101]

Verification : 16*0+0*8+4*1+2*0+1*1 = 21

Essayez avec une autre base...Ca marche !

Enfin, pour convertir d'une base a une autre il suffit de passer par la base 10

Je vous laisse comme exercice de le faire ;) :>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.