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 :

byte signé/non-signé pour image.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut byte signé/non-signé pour image.
    Bonjour,

    J'ai réalisé une fonction qui retourne un tableau de bytes à partir d'un fichier image.
    Pour les besoins de mon application, il est nécessaire que je traite ces bytes comme des entiers.

    Or, j'ai appris récemment qu'en java, absolument tous les types primitifs sont signés, le type byte y compris.
    Alors j'ai 'converti' les bytes signés en bytes non-signés en appliquant simplement le masque "0xFF":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Exemple
    byte monByte;
    // ...
    int unsignedByte = monByte & 0xFF;
    J'ai ensuite réalisé les traitements qui m'intéressaient sur les entiers.
    Désormais j'aimerais reconvertir ces entiers vers des bytes, pour à nouveau reconstituer une image.

    Ma question est la suivante: faut-il que je convertisse les entiers non-signés en bytes signés dans l'objectif de recréer l'image ?
    Et si oui, comment ?

    Merci par avance pour vos réponses.

    Cordialement.

    Furior.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut
    Finalement, j'ai trouvé la réponse (qui se cachait dans la question).

    Puisque le byte est un type signé, il faut repasser les entiers en type signé.

    Donc il suffit de caster en byte le résultat de l'entier et de l'application du masque 0xFF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Exemple
    int a = 255;
    byte b = (byte)(a & 0xff);
    Cordialement.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Furior Voir le message
    Donc il suffit de caster en byte le résultat de l'entier et de l'application du masque 0xFF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Exemple
    int a = 255;
    byte b = (byte)(a & 0xff);
    Dans ce sens-là, le masque est inutile. Un byte ne risque pas de conserver d'autres bits que les 8 plus faibles.

    Il suffit de faire

    Citation Envoyé par Furior Voir le message
    Or, j'ai appris récemment qu'en java, absolument tous les types primitifs sont signés, le type byte y compris.
    Rigoureusement parlant, char et boolean ne sont pas signés. Pour boolean on va dire que c'est évident puisque ce n'est pas un type numérique.
    Mais char est un type numérique. Avec des littéraux particuliers certes, mais numérique. Pourtant, un char est toujours positif.
    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. Manipulation signé non-signé
    Par MSP91120 dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/08/2010, 17h30
  2. promotion numérique signé non signé
    Par Débutant_ASM dans le forum Débuter
    Réponses: 6
    Dernier message: 03/03/2010, 12h56
  3. Réponses: 2
    Dernier message: 22/07/2009, 12h11
  4. Problème de valeur signé, non signé sous PL7 PRO
    Par absy456 dans le forum Automation
    Réponses: 2
    Dernier message: 09/06/2009, 17h27
  5. Conversion entier signé/non signé
    Par BATCHOS CON TEQUILA dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 03/03/2009, 16h53

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