IP à binaire en c# [Résolu]

Messages postés
7
Date d'inscription
jeudi 2 juin 2016
Dernière intervention
30 novembre 2018
- - Dernière réponse : Whismeril
Messages postés
12369
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
- 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 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
12369
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
1
Merci
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

Merci Whismeril 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

> Whismeril
Messages postés
12369
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
-
je veux ce code en vb 6 sil veut plait
Whismeril
Messages postés
12369
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
> khadija -
Bonjour, poste ta propre question dans le forum VB6
Whismeril
Messages postés
12369
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
-
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
Messages postés
7
Date d'inscription
jeudi 2 juin 2016
Dernière intervention
30 novembre 2018
-
Ouah merci en plus d'être complète ta réponse m'a beaucoup aidé!
Encore merci!
Whismeril
Messages postés
12369
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
-
De rien, tu peux marquer le sujet résolu, si cela te convient.
Commenter la réponse de Whismeril
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
0
Merci
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
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
0
Merci
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.