Conversion de base N vers base P (où N et P appartiennent à : [2:256])
Source / Exemple :
Public Function ConvertBase(ByVal Value As String, ByVal FromBase As Integer, ByVal ToBase As Integer) As String
Dim ElemFrom As String
Dim ElemTo As String
Dim Result As String
Dim Good As Boolean
Dim p As Integer
Dim Data As Double
Dim I As Double
Result = ""
If (FromBase > 1 And FromBase <= 256) And (ToBase > 1 And ToBase <= 256) Then
ElemFrom = ElemBaseSet(FromBase)
ElemTo = ElemBaseSet(ToBase)
Data = 0
Good = True
I = 1
Do While I <= Len(Value) And Good
p = InStr(ElemFrom, Mid(Value, I, 1))
Good = (p > 0)
If Good Then
Data = Data + (p - 1) * FromBase ^ (Len(Value) - I)
I = I + 1
End If
Loop
If Good Then
Do While Data >= ToBase
I = Data Mod ToBase
Result = Mid(ElemTo, I + 1, 1) & Result
Data = Data \ ToBase
Loop
If Data <> 0 Then Result = Mid(ElemTo, Data + 1, 1) & Result
End If
End If
ConvertBase = Result
End Function
Private Function ElemBaseSet(ByVal Base As Integer) As String
Dim I As Integer
Dim Elem As String
Elem = ""
If Base <= 10 Or Base <= 62 Then
For I = 0 To -(Base - 1) * (Base <= 10) - 9 * (Base > 10)
Elem = Elem & CStr(I)
Next I
Base = Base - 10
If Base > 0 And Base <= 52 Then
For I = 0 To -(Base - 1) * (Base <= 26) - 25 * (Base > 26)
Elem = Elem & Chr(65 + I)
Next I
Base = Base - 26
If Base > 0 And Base <= 26 Then
For I = 0 To -(Base - 1) * (Base <= 26) - 25 * (Base > 26)
Elem = Elem & LCase(Chr(65 + I))
Next I
End If
End If
Else
For I = 0 To 255
Elem = Elem & Chr(I)
Next I
End If
ElemBaseSet = Elem
End Function
Conclusion :
Si la valeur passé au paramettre VALUE contient des "symboles" n'appartenenant pas à la base de référence "FromBase" la fonction retourne rien.
Et tant pis si ca existe déjà.
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.