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

avec Java Discussion :

Conversion Int(16) en 2 bytes


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 14
    Points
    14
    Par défaut Conversion Int(16) en 2 bytes
    Bonjour à tous

    existe t'il un moyen simple de convertir un résultat de calcul de CRC en byte?

    Je calcule un CRC-CCITT qui arrive dans ma variable int sous 16 bits ( 31761 par exemple ).
    Je dois ajouter cette variable sous la forme 0x7C, 0x11 à mon byte[] pour le transférer, ou au moins convertir 31761 en 2 bytes.

    Quelqu'un à une manière facile d'y arriver?

    Bonne fêtes à tous.

    Zygoat

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    si tu as ton résultat sous la forme "int", tu devrais pouvoir aisément le caster en "Integer"

    Ensuite, la classe "Integer" possède une méthode "byteValue" (dont voici l'extrait de la Javadoc http://download.oracle.com/javase/6/docs/api/) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    byteValue
     
    public byte byteValue()
     
        Returns the value of this Integer as a byte.
     
        Overrides:
            byteValue in class Number
     
        Returns:
            the numeric value represented by this object after conversion to type byte.
    Je pense que cela résoudra ton problème...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta réponse rapide, mais je n'y arrive pas.

    Je ne comprend pas comment utiliser la méthode byteValue()

    byte b = crc.byteValue(); ( Cannot invoke byteValue() on the primitive type int)

    A+
    Zygoat

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 14
    Points
    14
    Par défaut
    J'ai trouvé une réponse, merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    byte[] b = new byte[2];
    for (int i = 0; i < 2; i++) {
    	int offset = (b.length - 1 - i) * 8;
    	b[i] = (byte) ((monInt >>> offset) & 0xFF);
    }

  5. #5
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Pour information, la méthode "byteValue" s'exécute sur un Integer... d'où le CAST. En reprenant ton entier "crc", cela donnerai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (new Integer(crc)).byteValue();
    Après tu le stock et t'en fais ce que tu veux
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  6. #6
    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
    Non mais, la question, c'était comment récupérer les deux bytes, qui composent les 16 bits de poids faible d'un int.
    Integer.byteValue() ne récupère que les 8 bits de poids le plus faible. Forcément, 16 bits ça va pas tenir dans 8 bits.

    La solution que zygoat donne au-dessus, est effectivement la bonne.
    Enfin, personnellement je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    byte[] bytes = new byte[2];
    byte[0] = (byte)monInt;
    byte[1] = (byte)(monInt >>> 8);
    Qui me paraît plus simple, mais bon...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Conversion int vers byte non signé
    Par grunk dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 09/06/2011, 16h24
  2. Conversion int en Byte
    Par nonolerobot77 dans le forum C++
    Réponses: 2
    Dernier message: 14/02/2008, 08h17
  3. [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
  4. [VB.NET] Conversion int-> bytes sur 4 octets
    Par SteelBox dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2005, 22h08
  5. [débutant] conversion int en hexa
    Par sergoid dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/05/2003, 11h11

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