Convertion binaire <--> Decimale à gogo [Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Convertion binaire <--> Decimale à gogo [Résolu]

Message par Kwai chang caine »

Bonjour à tous

Quelqu'un connaitrait il un lien ou un code capable de convertir un nombre decimal en binaire et vice et versa, mais sans limite de grandeur.

Car j'en ai essayé pas mal et au dessus d'un nombre de chiffre ça plante

Merci
Bonne journée
Dernière modification par Kwai chang caine le jeu. 31/janv./2008 12:27, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Je serai aussi preneur d'un tel code :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

De retour des ameriques, j'ai ramené ce code tout chaud de AKJ :D
Cela va donc faire, d'apres mes calculs, et si "je m'ai pas trompé", au moins deux heureux :wink:

ATTENTION !!!, Il est pour la 4.20.
Pour la 4.10 modifier la ligne 14 :

Code : Tout sélectionner

If Left(tmp$,1)="0": dec$ = Mid(tmp$, 2, 100): Else: dec$ = tmp$: EndIf 
En fait, j'ai mis 100 au hasard, apparement ça ne pose pas de probleme :oops:
Il est trop fort ce KCC :lol:

Code : Tout sélectionner

; Binary AKJ  31-Jan-08 
Procedure.s ConvertBinary(dec$) 
; Convert a decimal string (no leading zeroes) to binary 
Protected bin$, tmp$, carry, p, digit, quot 
bin$ = "" 
While dec$ 
  tmp$ = "": carry=0 
  For p=1 To Len(dec$) 
    digit = Val(Mid(dec$,p,1))+carry*10 
    quot = digit/2 : carry = digit-quot-quot 
    tmp$ + Chr(quot+'0') 
  Next p 
  If Left(tmp$,1)="0": dec$ = Mid(tmp$, 2): Else: dec$ = tmp$: EndIf 
  bin$ = Chr('0'+carry)+bin$ 
Wend 
ProcedureReturn bin$ 
EndProcedure 

Procedure.s ConvertDecimal(bin$) 
; Convert a binary string (no leading zeroes) to decimal 
Protected dec$, p,  carry, tmp$, q, digit 
If bin$="": ProcedureReturn "": EndIf 
dec$ = "0" 
For p = 1 To Len(bin$) 
  If Mid(bin$,p,1)="1": carry=1: Else: carry=0: EndIf 
  tmp$ = "" 
  For q = Len(dec$) To 1 Step -1 
    digit = Val(Mid(dec$, q, 1))*2+carry 
    If digit>9 
      carry = 1: tmp$ = Chr(digit-10+'0') + tmp$ 
    Else 
      carry = 0: tmp$ = Chr(digit+'0') + tmp$ 
    EndIf 
  Next q 
  If carry: dec$ = "1"+tmp$: Else: dec$ = tmp$: EndIf 
Next p 
ProcedureReturn dec$ 
EndProcedure 

Define dec$, bin$, tmp$ 
dec$ = "35735435438573546876687387443738743743573874387438743878374387438743873874387373745434" 
Debug dec$ 
bin$ =  ConvertBinary(dec$) 
Debug bin$ 
tmp$ = ConvertDecimal(bin$) 
Debug tmp$ 
If dec$<>tmp$: Debug "D>B>D Error": EndIf 
Debug "---" 
bin$ = "101011011101010101000101010101010110101101010101000101010101010101001010101010101010101011111101101010101101101010" 
Debug bin$ 
dec$ = ConvertDecimal(bin$) 
Debug dec$ 
tmp$ = ConvertBinary(dec$) 
Debug tmp$ 
If bin$<>tmp$: Debug "B>D>B Error": EndIf 
End
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

sinon pour faire plus court

Code : Tout sélectionner

; conversion binaire => decimal 
; par case PB forum
;-------------------------------------
Procedure bin2dec(ex$) ; jusqu'a to 32 bits apres a vous de modifier le code :) 
bit=32
l=Len(ex$)
For b=1 To l
	v=PeekB(@ex$+(l-b))-48
	a=a+(v << (32-bit))
	bit=bit-1
Next
ProcedureReturn a
EndProcedure 
Debug bin2dec("10001101011011010011")


oups j'avais pas bien lu ... sans limite de taille... désolé mais bon ca peux quand même servir :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

oups j'avais pas bien lu ... sans limite de taille... désolé mais bon ca peux quand même servir
Merci Case, c'est gentil quand meme :wink:

Code : Tout sélectionner

jusqu'a to 32 bits apres a vous de modifier le code :) 
Hihihihi !!! :lol: :lol: :lol:
C'est KCC qui a créé le POST :lol: :lol:
Si KCC, y savait modifier ça, il serait les narpions au soleil aux soleil des antilles, avec son portable et sa paille dans un coktail :lol:
Répondre