IP à binaire en c# [Résolu]

Raji71 6 Messages postés jeudi 2 juin 2016Date d'inscription 9 juin 2016 Dernière intervention - 8 juin 2016 à 08:38 - Dernière réponse : Whismeril 11405 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention
- 4 févr. 2018 à 13:32
Bonjour!
Est-ce que quelqu'un saurait comment coder la transformation d'une adresse IP en binaire en c#? J'ai cherché dans plusieurs sites mais il n'y a que des réponses en anglais et je n'arrive pas trop à comprendre ce qui fait que je ne sais pas exactement comment m'y prendre :/
Afficher la suite 

10 réponses

Répondre au sujet
Whismeril 11405 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - Modifié par Whismeril le 8/06/2016 à 17:50
+1
Utile
6
Bonjoir (c'est trop tôt pour bonsoir et trop tard pour bonjour)

C# sait convertir un entier en binaire, par contre ça donne le résultat en string (ça s'explique car la base 16 nécessite des lettres)
string binaire = Convert.ToString(192, 2); 


Ça fait aussi l'inverse
int decimale = Convert.ToInt32("01010101", 2);


Ensuite, qu'est ce qu'une adresse IP sous cette forme
"192.168.1.1"
?
C'est un string, qui présente des séries de chiffres séparés par un point.
Il y a un outil qui sert à transformer ce type de chaine en tableau de chaque sous chaines, string.Split.
string[] monIpTexte = "192.168.1.1".Split('.');

Et il y a l'inverse aussi, string.Join.

Une fois tout ça compilé
            string[] monIpTexte = "192.168.1.1".Split('.');
            string[] monIpBinaire = new string[4];

            for (int i = 0; i < 4;i++ )
            {
                int dec = Convert.ToInt32(monIpTexte[i]);
                monIpBinaire[i] = Convert.ToString(dec, 2);
            }

            string ipBinaire = string.Join(".", monIpBinaire);


Bon là évidement, je pars du principe que le format de la chaine est validée.
L'idéal serait quand même de passer par une Regex pour vérifier
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Cette réponse vous a-t-elle aidé ?  
khadija > Whismeril 11405 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 4 févr. 2018 à 13:16
je veux ce code en vb 6 sil veut plait
Whismeril 11405 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention > khadija - 4 févr. 2018 à 13:32
Bonjour, poste ta propre question dans le forum VB6
Whismeril 11405 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 8 juin 2016 à 18:15
Ha et si tu veux qu'il y ait toujours 8 bits
            string patternIPV4 = "^(?<octet1>25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.(?<octet23>25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$";
            Match m = Regex.Match(ip, patternIPV4);
            if (m.Success)
            {
                //suppression des 0 non significatifs
                string[] tab =new string[4];

                tab[0] = Convert.ToString(Convert.ToInt32(m.Groups["octet1"].Value), 2).PadLeft(8, '0'); ;// 001, 01, 1 donneront tous 1
                tab[1] = Convert.ToString(Convert.ToInt32(m.Groups["octet23"].Captures[0].Value),2).PadLeft(8,'0');
                tab[2] = Convert.ToString(Convert.ToInt32(m.Groups["octet23"].Captures[1].Value), 2).PadLeft(8, '0'); ;
                tab[3] = Convert.ToString(Convert.ToInt32(m.Groups["octet23"].Captures[2].Value), 2).PadLeft(8, '0'); ;

                string iPBinaireAvecVerifEntree = string.Join(".", tab);
            }
Raji71 6 Messages postés jeudi 2 juin 2016Date d'inscription 9 juin 2016 Dernière intervention - 9 juin 2016 à 08:22
Ouah merci en plus d'être complète ta réponse m'a beaucoup aidé!
Encore merci!
Whismeril 11405 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 9 juin 2016 à 09:38
De rien, tu peux marquer le sujet résolu, si cela te convient.
Commenter la réponse de Whismeril
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 8 juin 2016 à 11:47
0
Utile
1
Si tu connais le principe du binaire, c'est facile à faire sachant que chaque partie est codée sur 8.
Exemple: 0 = 00000000; 1= 00000001; 2= 00000010...

Renseigne toi sur comment fonctionne le binaire si c'est ça qui te pose problème (et à ce sujet il dois certainement avoir plein de documentation en français. Ceci dit, l'anglais c indispensable si tu veux continuer dans l'informatique)

Pour vérifier ton code: www.miniwebtool.com/ip-address-to-binary-converter/

Bonne chance !
je sais bien comment convertit mais j'existe un problème pour le code
Commenter la réponse de edwinzap
vb95 1501 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - Modifié par vb95 le 8/06/2016 à 13:26
0
Utile
Bonjour
Une adresse Ip est sous la forme 192.254.1.16
Sous quelle forme voudrais-tu qu'elle ressorte ?
hexa : 0CA10110 je suppose
binaire : 00001100 10100001 00000001 00010000

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
Commenter la réponse de vb95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.