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 vers byte non signé


Sujet :

avec Java

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut Conversion int vers byte non signé
    Bonjour à tous,

    existe il une solution pour obtenir un byte non signé en java ?

    Soit le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int hauteur = 240;
    byte[] header = new byte[5];
     
    header[3] = (byte) (hauteur & 0xff)
    header[4] = (byte) ((hauteur >> 8 ) & 0xff);
    Avec cette solution je vais me retrouver avec -16 dans la case 3.
    J'ai tout essayé mais à partir du moment ou j'induis un cast en byte le resultat passe en signé.
    Et du coup sans cast pas moyen de faire un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private byte toUnsigned(byte b)
    {
    	return (byte) ((b >= 0) ? b : 256 +b);
    }
    L'autre appli avec laquelle je dois communiquer attends impérativement un byte non signé, comment faire ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Citation Envoyé par grunk Voir le message
    existe il une solution pour obtenir un byte non signé en java ?
    Non. Un byte peut prendre 256 valeurs différentes, de -128 à 127.

    Citation Envoyé par grunk Voir le message
    L'autre appli avec laquelle je dois communiquer attends impérativement un byte non signé, comment faire ?
    - Si elle est en Java c'est impossible. Les bytes sont signés pour tout le monde.

    - Si elle est en un autre langage,
    -- si tu communiques avec par texte, il suffit de lui passer un entier positif qui ne dépasse pas 255 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int number = monByte & 0xFF;
    -- si tu communiques en binaire, passe-lui ton byte. Le binaire s'en tape que ce soit signé ou pas, il lui faut des bytes qui ont 256 valeurs différentes, et c'est exactement ce que tu as.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    outputStream.write(monByte);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Effectivement l'autre appli (c++) semble faire elle même la conversion du non signé vers le signé.

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Techniquement il n'y a pas de conversion.

    À ce niveau de logique, un byte n'est qu'une unité de données qui peut avoir 256 valeurs différentes. Comment on les écrit, ça c'est des questions pour les humains, pas pour les machines.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Techniquement il n'y a pas de conversion.

    À ce niveau de logique, un byte n'est qu'une unité de données qui peut avoir 256 valeurs différentes. Comment on les écrit, ça c'est des questions pour les humains, pas pour les machines.
    Malheureusement je réfléchi encore un peu trop comme un humain
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    On pourrait se dire qu'à aucun moment tu n'as eu besoin d'écrire les bytes en question, et que par conséquent ça ne te concernait pas non plus.
    En tout cas, tu n'as pas vu de conversion. Le 3e byte du header est resté le 3e byte du header, du début à la fin, sans subir la moindre modification d'aucune sorte.
    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 implicite int vers byte
    Par bzzzzz dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 19/08/2013, 08h21
  2. Conversion int en Byte
    Par nonolerobot77 dans le forum C++
    Réponses: 2
    Dernier message: 14/02/2008, 08h17
  3. Conversion String vers Byte
    Par zulianithomas dans le forum Delphi
    Réponses: 8
    Dernier message: 07/10/2006, 10h09
  4. Byte non signé
    Par Sergejack dans le forum Langage
    Réponses: 5
    Dernier message: 08/08/2006, 14h19
  5. [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

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