Conversion de type

Signaler
Messages postés
28
Date d'inscription
samedi 4 mai 2002
Statut
Membre
Dernière intervention
15 avril 2003
-
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
-
Existe-t-il une fonction en vb permettant de convertir un nombre en sa representation binaire ? Ou alors on doit se la programmer soi-meme ?

ex :
j'ai la valeur 13 je veux que ca me donne 1101 en valeur numerique ou sous forme de chaine de caracteres("1101").

deeds tacktyk

3 réponses

Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
2
C'est un de mes touts premier codes, c'est donc tres vieux et pas optimisé, mais ca à la merite d'etre commenté :

Function DeciBinr(decibin As Variant)
Dim reslt As StringDo Until decibin <0.5 ' on fait tourner la boucle jusqu'a ce que decibin soit ou inferieur a 0,5
decibin2 = decibin / 2 If Int(decibin2) decibin2 then reslt 0 & reslt Else reslt = 1 & reslt 'si la valeur integer de decibin2 est egale a decibin2 , alors :
on ajoute un zero à droite sinon on ajoute un 1

decibin = Int(decibin2) ' on garde la valeur integer decibin2 dans decibin
Format decibin2 ' on format decibin2
Loop ' fin de boucle

DeciBinr = reslt 'le resultat de la fonctiin DeciBinr est reslt
reslt = "" 'on reinitialise reslt
End Function

et pour l'autre sens que je vais d'ailleurs penser a réecrire plus clairement en .net :

Function BinrDeci(breslt As Variant)
Dim binR
binR = CVar(breslt) 'binR est egale à la valeur Variant de breslt
x = Len(breslt) 'x vaut la longeur de la chaine de characteres breslt
y = x
z = 0Do Until x 0 'on fait tourner la boucle jusqu'à x 0
z = z + (CVar(Mid(binR, x, 1) * (2 ^ (y - x)))) ' z est egale à z + la valeur Variant du x eme characteres (on commence par le dernier) de la chaine multiplié par 2 a la puissance y - x
x = x - 1 ' on soustrait 1 de x
Loop ' fin de boucle
BinrDeci = z ' la fonction binrDeci est egale à z
End Function

Comme je l'ai dit c'est pas optimisé du tout, mais la methode marche...au moins t'auras eu une reponse rapide

^^x
0
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
2
et heu...vb6 a pas une fonction Bin(lavaleur) deja integrée?
0
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
Private Function decimal_binaire(dec As Long) As String
Do decimal_binaire ("1" And dec Mod 2 1) & decimal_binaire
dec = dec \ 2
If dec = 0 Then Exit Do
Loop
End Function

Private Function binaire_decimal(bin As String) As Long
For i = Len(bin) To 1 Step -1
binaire_decimal = binaire_decimal + Mid(bin, i, 1) * 2 ^ (Len(bin) - i)
Next i
End Function
0