Avec VB, il est possible de convertir un nombre décimal (base 10) en hexadécimal (base 16): mais il n'est ni possible de faire le contraire, ni de faire d'autre types de conversions. Cette fonction permet de convertir un chiffre d'une base X vers une Base Y: la base pouvant aller du bianire à la base 32 (pour avoir une base plus grande, il faut rajouter des signes dans le dictionnaire).
Source / Exemple :
Private Const DICTIONNARY = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
' Aucune validation n'est faite, ce qui signifie qu'on considère que:
' - Le paramètre Number contient tous des signes valides appartenant au
' dictionnaire.
' - Les chiffres FromBase et ToBase appartiennent à ]0:Len(Dictionnary)]
Public Function BaseX(ByVal Number As String, ByVal FromBase As Integer, ByVal ToBase As Integer) As String
Dim Number10 As Long ' --- Nombre en base 10 ---------------------------------
Dim Power As Integer ' --- Puissance -----------------------------------------
Dim Idx As Integer ' --- Index ---------------------------------------------
Dim Sign As Integer ' --- Chiffre traité ------------------------------------
' --- Convertir en base 10 -------------------------------------------------
If FromBase <> 10 Then
Power = Len(Number) - 1
For Idx = 1 To Len(Number)
Sign = InStr(DICTIONNARY, Mid$(Number, Idx, 1)) - 1
Number10 = Number10 + (Sign * FromBase ^ Power)
Power = Power - 1
Next
Else
Number10 = Number
End If
' --- Convertir en base X --------------------------------------------------
If ToBase <> 0 Then
Power = 0
While Number10 > 0
Sign = Number10 Mod ToBase
BaseX = Mid$(DICTIONNARY, Sign + 1, 1) & BaseX
Number10 = (Number10 - Sign) / ToBase
Wend
Else
BaseX = Number10
End If
End Function
Conclusion :
Vous pourrez, entre autres, utiliser cette fonction pour les conversions courantes:
- Base2 <-> Base10
- Base2 <-> Base16
- Base10 <-> Base 16
- ...
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.