BINARY&DECIMAL

BZY1 Messages postés 214 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 12 avril 2008 - 11 août 2005 à 14:40
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 11 août 2005 à 16:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33194-binary-decimal

bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 août 2005 à 16:50
mettez ça dans la feuille de demarrage


Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim dTemp1 As Double
Dim dTemp2 As Double

Private Sub Form_Load()
Dim sDecimal As String
Dim sDuree As Double
dTemp1 = GetTickCount()
sDecimal = BinToDec("11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")
dTemp2 = GetTickCount()
MsgBox sDecimal
MsgBox "Durée = " & dTemp2 - dTemp1 & " millisecondes"
End Sub

Private Function BinToDec(sNombre As String) As String
Dim dNB1 As Double
Dim i As Double
For i = 1 To Len(sNombre)
dNB1 = (dNB1 * 2) + Mid(sNombre, i, 1)
Next i
BinToDec = dNB1
End Function
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 août 2005 à 16:28
ouai il faut essayer mais je pense que cela peut repousser la limite.

par contre je te conseil d'utiliser Clng plutôt que CInt. Le type long etant plus rapide que l'integer
Mikaels35 Messages postés 146 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 17 novembre 2009 2
11 août 2005 à 16:19
On peut aller plus loin en traitant les nombres décimaux chiffre par chiffre et les binaires par quartet le tout en String!

Private Sub Conv_Click()
Dim i%

'Convertit Text1 en binaire dans Text2
Text2 = ""
For i = 1 To Len(Text1)
Text2 = Text2 & DecBin(CInt(Mid(Text1, i, 1)))
Next i

' Reconvertit Text2 en décimal dans Text3
Text3 = ""
For i = 1 To Len(Text2) Step 4
Text3 = Text3 & BinDec(Mid(Text2, i, 4))
Next i
End Sub

Private Function DecBin(a As Integer) As String
Dim j%

DecBin = ""
For j = 3 To 0 Step -1
If a - 2 ^ j >= 0 Then
DecBin = DecBin & "1"
a = a - 2 ^ j
Else
DecBin = DecBin & "0"
End If
Next j
End Function

Private Function BinDec(a As String) As String
Dim j%, b%

For j = 1 To 4
b = b + CInt(Mid(a, j, 1)) * 2 ^ (4 - j)
Next j
BinDec = CStr(b)
End Function
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 août 2005 à 16:06
je viens d'aller jusqu'à BinToDec("1111111111111111111111111111111")
soit 2 147 483 647
je pense que cela doit suffir finalement :-)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 août 2005 à 15:56
l'algo est limité mais j'ai pondu ça en 10 sec et c'est déjà pas mal.
on peut au moins allez jusqu'a 30000 ou 50000.
Donc une bonne serie de 0 et de 1
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 août 2005 à 15:53
Public Function BinToDec(sNombre As String) As String
Dim lNB1 As Long
Dim lNB2 As Long
Dim i As Long

For i = Len(sNombre) To 1 Step -1
lNB2 = CDbl(Mid$(sNombre, i, 1))
lNB1 = lNB1 + (lNB2 * (2 ^ (Len(sNombre) - i)))
Next i
BinToDec = lNB1
End Function
cs_cbu Messages postés 394 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 4 novembre 2009 1
11 août 2005 à 15:37
oui il n'y a pas trop d'algo la ...
Pos top comme source ca !
BZY1 Messages postés 214 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 12 avril 2008
11 août 2005 à 14:40
salut ce qui est dommage dans ton prog c'est qu'il est limité entre 0 et 9, et je ne pense pas que tu puisse le faire pour quelqu'un qui aurait besoin d'un chiffre compris entre 6000 et 30000 par exemple car ton prog serait beaucoup trop long.
Rejoignez-nous