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 :

Conversion byte en int et vis versa


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut Conversion byte en int et vis versa
    UDP et InetAdress travaillant avec une IP sous forme d'un tableau de byte[] comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    InetAddress address = InetAddress.getByAddress({(byte)192, (byte)168, (byte)0, (byte)2});
    DatagramPacket packet = new DatagramPacket(out, out.length, address, 33333);
    Enfin je dois convertir cette adresse en une String de la forme :
    ... pour écriture dans un fichier.


    Et bien le code ci-après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     String strIp = "";
     
    for (int i = 0; i < ip.length; i++)
    {
        strIp += String.valueOf(ip[i]) + ".";
        System.out.print("IP => " + strIp);
    }
     
    getTableInit().put(CLE_IP_UDP, strIp.substring(0, strIp.length() - 1));
    ... écrit dans le fichier la valeur suivante :

    Cela semble normal puisque un byte couvre la plage -128 à 127.

    Alors comment faire pour convertir un byte > 127 en un int > 127, et vis versa ?

    Merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    int monint=( (monbyte) & 0x000000FF );

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par merill Voir le message
    int monint=( (monbyte) & 0x000000FF );
    En effet je pense jamais à jouer avec les opérateurs unaires


    a++

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Pourquoi toute ces parenthèses?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int monint= monbyte & 0x000000FF;
    c'est suffisant non?

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Uther Voir le message
    Pourquoi toute ces parenthèses?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int monint= monbyte & 0x000000FF;
    c'est suffisant non?
    Pourquoi tous ces 0?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int monint = monbyte & 0xff;

  6. #6
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Et bien merci à tous pour vos réponses.

    A+

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    tout à fait
    c'est juste, pour l'hstoire que je reprenais cela de mon code qui avait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    i1 = ( ((byte) stringBuffer.charAt(1)) & 0x000000FF) + 1;
    Des fois, je met des parenthèses en plus histoire de comprendre facilement le sens de l'execution.

  8. #8
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    C'est sans doute pour rendre la lecture plus facile, mais dans ton cas les parenthèses sont quand même inutiles à par pour le (byte) Personellement je préfère eviter les parentheses en trop, je trouve pas plus clair.

    Par contre dans ( (monbyte) & 0x000000FF ) ça deviens carrément trompeur. Au premier coup d'oeil on à l'impression que l'on fait un cast en monbyte.

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

Discussions similaires

  1. Transformer des bytes en String et vis versa
    Par sebac dans le forum Langage
    Réponses: 2
    Dernier message: 16/09/2009, 14h47
  2. conversion Byte[] vers int
    Par skud dans le forum C#
    Réponses: 5
    Dernier message: 17/05/2007, 12h14
  3. conversion flottant en binaire et vis versa
    Par sandball22 dans le forum C
    Réponses: 43
    Dernier message: 20/03/2007, 18h43
  4. Conversion anglais-francais et vis-versa
    Par lazzeroni dans le forum BIRT
    Réponses: 43
    Dernier message: 04/04/2006, 17h13

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