Je vous présente deux petites procédures que j’avais faites pour passer le temps.
Ce sont deux procédures de conversion de base 10 à base X , et de base X à base 10.
Tout est expliqué dans le code source :
Code : Tout sélectionner
;==============================================================================
;| Programme de conversion [Base(X) à Base(10)] ou de [Base(10) à Base(X)] |
;| By Mytic. |
;==============================================================================
;Pb : 4.20
;Note : Que sur des entiers
;_______________________________________________( les procedures de conversion )
Procedure.s Dec_to_BaseX(nombre.l,base.c)
r.l = 0
t$ = ""
Repeat
r = nombre % base : nombre = (nombre / base)
If r>9
c = 87+r
t$=t$ + Chr(c)
Else
t$=t$+Str(r)
EndIf
Until nombre = 0
For i = Len(t$) To 1 Step -1
n$ = n$ + Mid(t$,i,1)
Next i
ProcedureReturn n$
EndProcedure
Procedure.l BaseX_to_Dec(nombre.s,base.c)
n.l=0
m.l=0
For i = Len(nombre) To 1 Step -1
m=Pow(base,Len(nombre)-i)
l$ = Mid(nombre,i,1)
If Asc(l$) >= 97
n = n + (Asc(l$)-87)*m
Else
n = n + (Val(l$)*m)
EndIf
Next i
ProcedureReturn n
EndProcedure
;________________________________________________________________________________
;==== Exemples :
Debug Dec_to_BaseX(255,16) ; converti le décimal 255 (base 10) en base 16 (hexadécimal)
Debug BaseX_to_Dec("1000",2) ; converti le binaire 1000 (base 2) en base 10 (décimal)
Debug Dec_to_BaseX(255,30) ; converti 255 (décimal) en base 30
Debug BaseX_to_Dec("8f",30) ; converti 8f ( base 30 ) en base 10
