IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

convertir ip range en CIDR


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut convertir ip range en CIDR
    Bonjour.

    Connaitriez vous une fonction (ou au moins un algoritme) pour convertir un IPRange en CIDR?

    Par exemple :

    IpRange2CIDR("91.201.64.0 - 91.201.67.255")
    donnerait : "91.201.64.0/22"

    Je dois mal m'y prendre car je ne trouve rien, pas de code d'exemple, pas d'explication claire et précise.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    C'est tres impressionnant !
    on trouve plein de ressources pour convertir un CIDR en plage d'ip, mais absolument rien pour faire l'inverse.

    Tout ce que l'on trouve ce sont des sites comme ip2cidr.com avec un formulaire permettant de le faire, mais aucun code source ni explication sur comment le faire...

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    Bonjour.

    Connaitriez vous une fonction (ou au moins un algoritme) pour convertir un IPRange en CIDR?

    Par exemple :

    IpRange2CIDR("91.201.64.0 - 91.201.67.255")
    donnerait : "91.201.64.0/22"

    Je dois mal m'y prendre car je ne trouve rien, pas de code d'exemple, pas d'explication claire et précise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var ipA=new byte[]{91,201,64,0};
    var ipB=new byte[]{91,201,67,255};
     
    var nipA = (ipA[0]<<24)+(ipA[1]<<16)+(ipA[2]<<8)+ipA[3];
    var nipB = (ipB[0]<<24)+(ipB[1]<<16)+(ipB[2]<<8)+ipB[3];
     
    var resultat = 32 - Math.Log(nipB-nipA+1,2);
    Le compte est bon!

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    mais mais !
    tu es genial !!!

    un tres tres grand merci

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var ipA=new byte[]{91,201,64,0};
    var ipB=new byte[]{91,201,67,255};
     
    var nipA = (ipA[0]<<24)+(ipA[1]<<16)+(ipA[2]<<8)+ipA[3];
    var nipB = (ipB[0]<<24)+(ipB[1]<<16)+(ipB[2]<<8)+ipB[3];
     
    var resultat = 32 - Math.Log(nipB-nipA+1,2);
    Le compte est bon!
    Bonjour !
    Je me permets de ranimer ce vieux fil parce que j'avais exactement la même question que giova_fr, sauf que parfois, il n'est pas possible de convertir une IPRange en une seul et unique CIDR.

    Par exemple, avec la plage 209.120.110.0 - 209.120.114.255
    Le résultat de ton code est 21.6780719051126

    Pour convertir cette plage avec succès il nous faut plusieurs CIDR:
    209.120.110.0/23
    209.120.112.0/23
    209.120.114.0/24

    Comment faire dans ce cas ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Convertir une rangée de numérique en texte
    Par yama0 dans le forum Macros et VBA Excel
    Réponses: 38
    Dernier message: 03/01/2013, 14h59
  2. convertir listfillrange(string) en range
    Par myriambou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/07/2011, 18h10
  3. convertir un range en cells
    Par backdraf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/02/2010, 18h17
  4. [Toutes versions] [VBA] Convertir une chaine en Range pour une sélection de colonnes
    Par Aurelangelo dans le forum Macros et VBA Excel
    Réponses: 34
    Dernier message: 14/04/2009, 15h37
  5. Convertir Range en Cells
    Par Sakapatate dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2008, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo