Soyez le premier à donner votre avis sur cette source.
Snippet vu 16 810 fois - Téléchargée 86 fois
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
Chapeau.
En tout cas, ça m'est très utile.
Merci beaucoup.
Vautour32
par contre on peut optimiser en laissant le DICO et on modifie la ligne qui s en sert part :
BaseX = Number Mod ToBase & BaseX
Merci
Multipac
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.