ANALYSE IP

ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 - 8 juil. 2008 à 19:48
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 8 juil. 2008 à 23:05
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/47257-analyse-ip

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
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és 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
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és 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
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
Rejoignez-nous