BZY1
Messages postés214Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention12 avril 2008
-
11 août 2005 à 14:40
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDerniè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.
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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és1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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és146Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention17 novembre 20092 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és1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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és1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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és1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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és394Date d'inscriptionmercredi 30 janvier 2002StatutMembreDernière intervention 4 novembre 20091 11 août 2005 à 15:37
oui il n'y a pas trop d'algo la ...
Pos top comme source ca !
BZY1
Messages postés214Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention12 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.
11 août 2005 à 16:50
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
11 août 2005 à 16:28
par contre je te conseil d'utiliser Clng plutôt que CInt. Le type long etant plus rapide que l'integer
11 août 2005 à 16:19
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
11 août 2005 à 16:06
soit 2 147 483 647
je pense que cela doit suffir finalement :-)
11 août 2005 à 15:56
on peut au moins allez jusqu'a 30000 ou 50000.
Donc une bonne serie de 0 et de 1
11 août 2005 à 15:53
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
11 août 2005 à 15:37
Pos top comme source ca !
11 août 2005 à 14:40