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

Langage Java Discussion :

Problème convertion int / byte[]


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 75
    Par défaut Problème convertion int / byte[]
    Bonjour à tous,

    j'ai un tableau de 4 bytes.
    j'ai un nombre entier "int".

    Je voudrais remplir mon tableau de bytes
    avec la valeur de cette entier.

    Exemple, si
    int = 1000; //1000 = 03E8 en hexa et E8 = 232 en décimal.

    le tableau doit contenir :
    byte[0] = 232;
    byte[1] = 3;
    byte[2] = 0;
    byte[3] = 0;

    Je rappelle que je ne peux pas faire directement :
    byte[0] = 1000;
    car un octet ne peut contenir des valeurs que de -128 à 127 ou de 0 à 255.

    Merci pour votre aide les gars.

    a++

  2. #2
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Je ne vois pas trop ce que tu veux faire exactement. Pourrais-tu explixiter s'il te plaît ?

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 75
    Par défaut
    Je pensais avoir été clair ?

    Je veux remplir mon tableau de 4 bytes avec la valeur d'un entier.

    Si l'entier vaut 50, mon tableau doit contenir :
    byte[0] = 50;
    byte[1] = 0;
    byte[2] = 0;
    byte[3] = 0;

    Si l'entier vaut 256, mon tableau doit contenir :
    byte[0] = 255;
    byte[1] = 1;
    byte[2] = 0;
    byte[3] = 0;

    Si l'entier vaut 1000, mon tableau doit contenir :
    byte[0] = 232; // 0xE8 = 232 en décimal
    byte[1] = 3;
    byte[2] = 0;
    byte[3] = 0;

  4. #4
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Oui très bien, ça d'accord. Mais que représente ce 3 ???

    [EDIT :] Désolé, je viens de le voir. Ben, je sais pas...

    Ben déjà, convertis ton entier en hexa. Sinon, pour la suite, je suis perplexe.

  5. #5
    Membre éprouvé Avatar de Mr Pink Eyes
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Par défaut
    Je te proposerais bien de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ton_byte=new Integer(1000).byteValue()
    Mais ne l'ayant jamais utilisé je ne sais pas si cela te conviendra.

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    deux méthodes:
    1. la méthode objet, utilisant ObjectOutputStream pour convertir l'int en sa valeur byte
    2. la méthode "type C" en utilisant les opérateurs binaire sur les bits:

    1.
    baos=new ByteArrayOutputStream(4);
    new ObjectOuputStream(baos).writeInt(123456789);
    baos.toByteArray();

    2. (bien ordonner les poids faible/ poids fort en fonction de l'endian: depuis la source de ObjectOutputStream)
    writeBuffer[0] = (byte)(v >>> 24);
    writeBuffer[1] = (byte)(v >>> 16);
    writeBuffer[2] = (byte)(v >>> 8);
    writeBuffer[3] = (byte)(v >>> 0);

    http://fr.wikibooks.org/wiki/Program...p%C3%A9rateurs

  7. #7
    Membre expérimenté Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Salut,

    Je pense que tu veux faire quelque chose comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    byte[0] = (v >>> 24) & 0xFF;
    byte[1] = (v >>> 16) & 0xFF;
    byte[2] = (v >>> 8) & 0xFF;
    byte[3] = (v >>> 0) & 0xFF;

    A+
    Hydraland

    [edit] grillé

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 75
    Par défaut
    Merci pour votre rapiditité les gars.

    J'ai testé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    byte[0] = (v >>> 0) & 0xFF;
    byte[1] = (v >>> 8) & 0xFF;
    byte[2] = (v >>> 16) & 0xFF;
    byte[3] = (v >>> 24) & 0xFF;
    et ça marche !

    merci beaucoup !

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

Discussions similaires

  1. convert int to byte
    Par toti16 dans le forum Langage
    Réponses: 3
    Dernier message: 01/05/2014, 23h31
  2. Réponses: 1
    Dernier message: 14/11/2007, 14h53
  3. Réponses: 8
    Dernier message: 07/12/2005, 14h44
  4. Réponses: 8
    Dernier message: 01/03/2005, 22h41
  5. [VB.NET] Conversion int-> bytes sur 4 octets
    Par SteelBox dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2005, 22h08

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