IP à binaire en c# [Résolu]

Signaler
Messages postés
8
Date d'inscription
jeudi 2 juin 2016
Statut
Membre
Dernière intervention
4 février 2020
-
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
-
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 :/

3 réponses

Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
540
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
>
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021

je veux ce code en vb 6 sil veut plait
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
540 > khadija
Bonjour, poste ta propre question dans le forum VB6
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
540
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);
            }
Messages postés
8
Date d'inscription
jeudi 2 juin 2016
Statut
Membre
Dernière intervention
4 février 2020

Ouah merci en plus d'être complète ta réponse m'a beaucoup aidé!
Encore merci!
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
540
De rien, tu peux marquer le sujet résolu, si cela te convient.
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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
Messages postés
2427
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 mai 2021
137
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.