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

Java Discussion :

int vers byte[4]


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut int vers byte[4]
    Bonjour,

    Je voudrais savoir comment coder un entier sur 4 octets ?
    J' ai testé la méthode byteValue de la classe Integer , mais ca ne code que sur un seul octet.

    Merci de votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           byte[] tableau=new byte[listeEntier.size()]; // liste d ' entiers
    		for (int i = 0; i < listeEntier.size(); i++) {
    	           tableau[i] = (new Integer(listeEntier.get(i)).byteValue());
                       System.out.println(lel[i]);
                      }
    Merci de votre aide

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pas de méthode toute faite fournie avec Java, 'faut utiliser les shifts.

    En big-endian, c'est comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    byte[] tableau = new byte[] {
      (byte)(entier >> 24),
      (byte)(entier >> 16),
      (byte)(entier >> 8),
      (byte)entier
    };
    Bien sûr, il est rare qu'on ait vraiment besoin de faire ça. Si on veut un int, il devrait rester int ; si on veut un byte[], il fallait commencer avec un byte[].
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 531
    Points
    3 531
    Billets dans le blog
    1
    Par défaut
    Une méthode est donnée sur le premier liens de google..

    http://cratle7.blogspot.com/2008/01/...e-in-java.html

    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
    private static int[] generateByte(int integer, int byteLength) {
        	int[] byteStr = null;
        	if (byteLength==4){
        	byteStr=new int[4];
        	byteStr[0]=(byte)((integer & 0xff000000)>>>24); 
        	byteStr[1]=(byte)((integer & 0x00ff0000)>>>16);
        	byteStr[2]=(byte)((integer & 0x0000ff00)>>>8); 
        	byteStr[3]=(byte)((integer & 0x000000ff)); 
        	}
     
        	if (byteLength==3){
        	byteStr=new int[3];
        	byteStr[0]=(byte)((integer & 0x00ff0000)>>>16);
        	byteStr[1]=(byte)((integer & 0x0000ff00)>>>8); 
        	byteStr[2]=(byte)((integer & 0x000000ff)); 
        	}
        	return byteStr;
        	}
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Le byteLength de 3 ou 4 n'est quand même pas super utile pour une première compréhension -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut
    Je vous remercie , ca fonctionne bien , mais comment faire pour récupérer l ' ensemble des valeurs dans mon tableau a la sortie de ma boucle for.
    Car sinon , ca n ' enregistre que la dernière valeur et j ' aimerai éviter de passer par un fichier pour enregistrer mon tableau de byte[] mais directement récupérer son contenu a la sortie .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    byte[]  tab ; 
    for (int i = 0; i < listeEntier.size(); i++) {
                                 tab = new byte[] {
    		                (byte)((listeEntier.get(i) >> 24) & 0xFF),
    		                (byte)((listeEntier.get(i) >> 16) & 0xFF),
    		                (byte)((listeEntier.get(i) >> 8) & 0xFF),
    		                (byte)(listeEntier.get(i) & 0xFF)
    		              };
     
    	        }

    J ' arrives bien a faire cela sur 2 octets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    byte[] b = new byte[2];
    		int field=0;
     
     
    		for (int i = 0; i < 2; i++) {
    			int offset = (b.length - 1 - i) * 8;
    			b[i] = (byte) ((field >>> offset) & 0xFF);
     
    		}
    mais sur 4 octets , je ne vois pas comment faire.
    Merci de votre aide

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Simplement en transformant ton tableau de byte en tableau de tableau de byte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    byte[][]  tab ; 
    for (int i = 0; i < listeEntier.size(); i++) {
                                 tab[] = new byte[] {
    		                (byte)((listeEntier.get(i) >> 24) & 0xFF),
    		                (byte)((listeEntier.get(i) >> 16) & 0xFF),
    		                (byte)((listeEntier.get(i) >> 8) & 0xFF),
    		                (byte)(listeEntier.get(i) & 0xFF)
    		              };
     
    	        }
    Ainsi, tab[0] contiendra le premier tableau, tab[1] contiendra le second, etc.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut
    merci , ca fonctionne

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

Discussions similaires

  1. Conversion implicite int vers byte
    Par bzzzzz dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 19/08/2013, 08h21
  2. String vers byte[]
    Par EpOnYmE187 dans le forum Langage
    Réponses: 8
    Dernier message: 28/10/2011, 11h23
  3. Conversion int vers byte non signé
    Par grunk dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 09/06/2011, 16h24
  4. [Debutant(e)]conversion int to byte[] et inversement
    Par mune dans le forum Général Java
    Réponses: 23
    Dernier message: 21/07/2005, 14h47
  5. [Conversion]convertir int[] en bytes[]
    Par tony_big_guy dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2005, 15h47

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