cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 8 juil. 2008 à 23:05
euh... le principe de l'ipv4 c'est d'utiliser des masque de bit pour traiter plus vite les informations et donc calculer des adresses. Hors si tu convertis tout en string tu ne profite pas de cet aspet.
Transformes tes ip en binaire et tu veras de quoi je parle :p
@+
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 20161 8 juil. 2008 à 19:51
Oups je me suis gourré. Ce n'est pas :
#Public Function CBin(N as Long) As String
#CBin = BaseConv(N,2)
#End Function
Mais :
Public Function CBin(N as Long) As String
CBin = DecToBase(N,2)
End Function
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 20161 8 juil. 2008 à 19:50
Explication :
1) Tu n'utilises pas de boucle.
2) Tes variables sont en variant.
3) Le paramètre est en variant.
Ma fonction (DecToBase), conversion de décimal à la base que tu veux, gère les bases de 2 à 36.
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 20161 8 juil. 2008 à 19:48
Ta conversion binaire est lamentable !!
Voilà une fonction correcte :
Private Function DecToBase(Number As Integer, Base As Byte) As String
Dim Rest As Integer, Result As String
Const Charset As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
If Base > 36 Then Exit Function
Do
Rest = Number Mod Base
Number = Number \ Base
Result = Mid(Charset, Rest + 1, 1) & Result
Loop While Number > 0
DecToBase = Result
End Function
Public Function CBin(N as Long) As String
CBin = BaseConv(N,2)
End Function
8 juil. 2008 à 23:05
Transformes tes ip en binaire et tu veras de quoi je parle :p
@+
8 juil. 2008 à 19:51
#Public Function CBin(N as Long) As String
#CBin = BaseConv(N,2)
#End Function
Mais :
Public Function CBin(N as Long) As String
CBin = DecToBase(N,2)
End Function
8 juil. 2008 à 19:50
1) Tu n'utilises pas de boucle.
2) Tes variables sont en variant.
3) Le paramètre est en variant.
Ma fonction (DecToBase), conversion de décimal à la base que tu veux, gère les bases de 2 à 36.
8 juil. 2008 à 19:48
Voilà une fonction correcte :
Private Function DecToBase(Number As Integer, Base As Byte) As String
Dim Rest As Integer, Result As String
Const Charset As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
If Base > 36 Then Exit Function
Do
Rest = Number Mod Base
Number = Number \ Base
Result = Mid(Charset, Rest + 1, 1) & Result
Loop While Number > 0
DecToBase = Result
End Function
Public Function CBin(N as Long) As String
CBin = BaseConv(N,2)
End Function