puis ensuite en base X
je me suis bien sur aidé d'internet pour me remettre a jour,
j'ai pondu ce petit code , qui je pense fonctionne pas mal
il a la particularité de ne pas utiliser les Puissances pour obtenir le resultat
il doit tenir jusqu'a la base 26 ??
de toute façon apres la base 26 , je ne vois pas comment on ecrit le nombre
en principe le systeme reste le meme quelque soit la base utilisé , donc "no limite"
voici le code :
Code : Tout sélectionner
; l'algo est basé sur le principe suivant :
; pour le nombre 94 en base 2
; 94/2 = 0 reste 47
; 47/2 = 1 reste 23
; 23/2 = 1 reste 11
; 11/2 = 1 reste 5
; 5/2 = 1 reste 2
; 2/2 = 0 reste 1
; donc : nombre/base .... on recup le resultat qu'on affiche, puis on prends le reste de la division comme nouveau nombre !
Declare.s Base(nombre,Base)
nombre=194
Debug "la valeur 194 en Decimal"
base=8 ; en Octal
debug "en octal :"+Base(nombre,Base)
nombre=194
base=16 ; en Hexa
debug "en Hexadecimal :"+Base(nombre,Base)
nombre=194
base=2 ; en Binaire
debug "en Binaire:"+Base(nombre,Base)
nombre=194
base=20 ; en base 20 !!!!
debug "en base 20:"+Base(nombre,Base)
calldebugger
Procedure.s Base(nombre,Base)
; By Dobro
string_ref.s="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
while nombre>0
reste=Mod(nombre,base)
Resultat.s=Resultat.s+ StringField(string_ref.s,Reste+1,",") ;;str(reste)
nombre=nombre/base
Wend
ProcedureReturn ReverseString(Resultat.s)
Endprocedure; EPB