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

Langage PHP Discussion :

Calcul de subnet


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut Calcul de subnet
    Bonjour a tous, je viens a vous pour un probleme assez specifique. Je suis actuellement dans la necessite de developper un petit php qui genere automatiquement une liste de masque de sous reseau valide.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for ($i = 0; $i < 32; $i++)
    {
      echo long2ip(~((1 << $i) - 1));
      echo '<br />';
    }
    32 etant le nombre de prefix possible. Voici le resultat de la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    255.255.255.255
    255.255.255.254
    255.255.255.252
    255.255.255.248
    255.255.255.240
    255.255.255.224
    255.255.255.192
    255.255.255.128
    255.255.255.0
    255.255.254.0
    255.255.252.0
    255.255.248.0
    255.255.240.0
    255.255.224.0
    255.255.192.0
    255.255.128.0
    255.255.0.0
    255.254.0.0
    255.252.0.0
    255.248.0.0
    255.240.0.0
    255.224.0.0
    255.192.0.0
    255.128.0.0
    255.0.0.0
    254.0.0.0
    252.0.0.0
    248.0.0.0
    240.0.0.0
    224.0.0.0
    192.0.0.0
    127.255.255.255
    Ce que je ne comprends pas c'est la derniere valeur : 127.255.255.255

    Quelqu'un aurait une explication sur ce comportement ??? J'avoue que c'est quelque chose de bien precis mais une suggestion serait la bienvenue :-)


    Je vous remercie d'avance pour vos futurs reponses

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    essaye ce code, tu verras mieux ce que tu passes comme argument de "long2ip" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for ($i = 0; $i < 32; $i++)
    {
        echo (1 << $i) . ' : ';
        echo (~(1 << $i)) . ' : ';
        echo (~((1 << $i) - 1)) . ' : ';
        echo long2ip(~((1 << $i) - 1));
        echo '<br />';
    }
    apparemment, il y a dépassement de capacité. tu utilises ces valeurs dans quel but ? juste pour l'affichage ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut
    Les deux, dans le but applicatif et dans le but de l'afficher. Donc pour le coup il y a en effet un retour dans la plus petite valeur negatif du int. J'ai tenter de voir si on pouvait faire des unsigned mais bon ....

    De toute facon ma petite chance c'est que le masque 128.0.0.0 n'est normalement pas utilise dans mon application (enfin j'espere !). Apres c'est juste que ca me perturbe ce truc

    *******

    Je reedite mon poste. Apres reflexion, le soucis vient du fait de la limite du int. En inversant la methode ca fonctionne !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for ($i = 0; $i < 32; $i++)
    {
      echo long2ip(~(1 << $i) + 1);
      echo '<br />';
    }
    Tout simplement ! Merci en tout cas pour ta reponse

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

Discussions similaires

  1. Calcul Subnet Classe B (172.16)
    Par eternia dans le forum Équipements
    Réponses: 7
    Dernier message: 16/06/2014, 01h02
  2. Calcul subnet Classe B
    Par Crackozor dans le forum Équipements
    Réponses: 13
    Dernier message: 21/06/2012, 17h08
  3. [TP7] Calculer sin, cos, tan, sqrt via le FPU
    Par zdra dans le forum Assembleur
    Réponses: 8
    Dernier message: 25/11/2002, 04h09
  4. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35
  5. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 17h45

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