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 :

Générer un tableau de bytes


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut Générer un tableau de bytes
    Bonjour, je débute en java et on me demande dans un exercice de générer un tableau de bytes (dans une fonction qui retourne le tableau), j'ai tappé ceci dans mon programme, mais ca plante à l'exécution, quelqu'un pourrait il m aider ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public byte nextByte(){
    		Random generateur = new Random(System.currentTimeMillis());
    		byte tableau [] = new byte[1];
    		generateur.nextBytes(tableau);
    		System.out.println("byte : " + tableau[1]);
    		return tableau[1];
    	}//end nextByte

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    On risque pas de pouvoir t'aider si tu nous montres pas la partie qui plante. (Et puis, je vois pas en quoi ça avait l'air d'une bonne idée, de ne pas nous donner le message d'erreur.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut
    salut,

    en java les tableaux sont indexés à partir de 0.

    Or dans ton code tu instancies un tableau de taille égale à 1.

    donc forcément quand tu essayes d'accéder à l'index 1, une exception est remontée.

    changes juste cette partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("byte : " + tableau[0]);

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut
    Super, ca fonctionne

    Merci

    Java me génère des bytes en -127 et 127, dans mon cas je souhaiterais générer entre 0 et 255

    Que dois je ajouter dans mon code ?

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ça, c'est plus compliqué.

    Un byte peut prendre 256 valeurs différentes, et en Java, ce sont les valeurs -128 à 127. Un byte en Java ne peut pas avoir de valeur supérieure à 127.

    Le plus simple est de régler ça à l'affichage, et d'afficher un int au lieu d'un byte. Cet int vaudra la même chose que le byte pour les valeurs 0 à 127. Et il vaudra de 128 à 255 pour les valeurs de byte de -128 à -1.

    Avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int monInt = monByte & 0xFF;
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut
    ok merci , je vais tester ca

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut
    Dans une autre fonction de type byte, je dois générer des bytes entre 32 et 127, pour ensuite les afficher en char.

    Quel est la commande a ajouter pour l'obliger a rester entre 32 et 127 ?

    Merci pour l aide

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un int de zéro à 127 - 32. Ensuite tu y ajoutes 32.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Socket][File] Envoyer un tableau de byte
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 30/01/2014, 09h10
  2. Réponses: 1
    Dernier message: 09/05/2005, 14h19
  3. probleme d allocation avec un tableau de BYTE
    Par e1lauren dans le forum C++
    Réponses: 5
    Dernier message: 06/05/2005, 13h42
  4. [VB.NET] Tableau de bytes Lecture/Ecriture
    Par BenoitM dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/04/2005, 09h51
  5. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/01/2005, 10h12

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