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

Collection et Stream Java Discussion :

Retourner un tableau de byte avec une adresse IPV4 en paramètre


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Retourner un tableau de byte avec une adresse IPV4 en paramètre
    Bonjour, je suis nouveau sur le profil et je débute en Java.

    Je me demandais si il n'y avait pas une solution plus rapide afin de retourner un tableau de byte à partir d'une adresse IPV4.

    Le code est le suivant :

    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
    private static byte[] question4(String ipv4) {
    		byte[] tab = new byte[4];
     
    		var p = Pattern.compile("^([0-9]{1,3}\\.){3}[0-9]{1,3}$");
    		var m = p.matcher(ipv4);
     
    		if(m.find()) {
    			String[] splited = ipv4.split("\\.");
    			int[] toBeNumber = new int[splited.length];
     
    			for(int i = 0; i < splited.length; i++) {
    				toBeNumber[i] = Integer.parseInt(splited[i]);
    				tab[i] = (byte)toBeNumber[i];
    				System.out.println(tab[i]);
    			}
    		}
    		return tab;
    	}
     
    	public static void main(String[] args) {
    		question4("174.12.254.1");
    	}
    Ca me retourne le tableau composé de :
    -82
    12
    -2
    1

    Mon prof m'a dit qu'avec Pattern, cela me permettait de récupérer directement les chiffres, mais je ne vois pas.

    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 631
    Points
    21 631
    Par défaut
    Hello,

    il suffit de faire quatre fois le pattern du nombre pour récupérer les quatre nombres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})"
    Mais bon c'est pas spécialement mieux que de faire un split().

    En termes de facilité ça se vaut. En termes de clarté, bon courage pour interpréter le pattern du dessus comme reconnaissant des IPv4. S'il y a une erreur bon courage pour la trouver.

    Et en plus le pattern ne peut pas vérifier si les nombres sont bien limités de 0 à 255 ni décourager les zéros inutiles genre 025.

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

Discussions similaires

  1. Recuperer un tableau de byte avec une url
    Par GuiomNantes dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 01/07/2009, 21h31
  2. Réponses: 9
    Dernier message: 03/12/2007, 18h49
  3. Retourner un tableau d'entier avec une fonction ?
    Par Seb33300 dans le forum C++
    Réponses: 10
    Dernier message: 05/04/2007, 16h25
  4. [PHPMailer] Les mails avec une adresse extérieure ne partent pas
    Par captaindidi dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 06/01/2006, 19h11
  5. [LG]Lecture de fichier avec une adresse internet
    Par forbin dans le forum Langage
    Réponses: 8
    Dernier message: 09/02/2005, 19h00

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