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


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut Byte non signé
    Y a t'il moyen de déclarée une variable de type byte non signé (0..255) ?
    Car j'ai besoin d'écrire un fichier de bytes (0..255).

  2. #2
    Membre éprouvé Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Par défaut
    haaaaaaaa? des byyyyyytes (0..255) ?

    Non on ne peut pas. Les type primitifs numériques en java sont signés.

    PS: -128 + 128 =0 et 127 + 128 = 255

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par White Rabbit
    haaaaaaaa? des byyyyyytes (0..255) ?

    Non on ne peut pas. Les type primitifs numériques en java sont signés.

    PS: -128 + 128 =0 et 127 + 128 = 255
    Quelle est la best practise pour mon problème alors ? (faire l'addition + 128 à tout bout de champs ne doit pas l'être, surtout que ça me donnera autre chose qu'un byte au finale ^^')

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    Avant tout, je ne suis pas spécialiste du Java mais je peux sans doute apporter ma piere à l'édifice.

    Le type char est un byte non signé. Il faut simplement faire attention au moment de la conversion en byte ou en integer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		char car;
     
    		for (car=0; car<=255; car++)
    		{
    			System.out.println(car+" "+(byte)car+" "+(int)car);	
    		}
    sinon on peut utiliser des masques pour réaliser une conversion. Néanmoins il faudra utiliser un autre type d'entier (ici les int) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    	public static byte IntToByte(int nb)
    	{
    		return (byte)(nb & 255);	
    	}
     
    	public static int ByteToInt(byte nb)
    	{
    		return (nb & 255);
    	}
    public static void main(String arg[])
    {
    		int i;
    		byte c;
     
    		for (i=0; i<=255; i++)
    		{
    			c = IntToByte(i);	
    			System.out.println(c+" "+ByteToInt(c));
    		}
    }

  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
    C'est un gros manque à java je trouve, c'est pas super pratique de manipuler des bytes signés parfois...

    Mais bon, avec un simple monByte & 0xFF, tu obtiens un int... et tu peux faire l'inverse aussi...

  6. #6
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    Le seul moyen est de faire un cast avec &0xFF.
    Voici un exemple
    http://www.rgagnon.com/javadetails/java-0026.html

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

Discussions similaires

  1. byte signé/non-signé pour image.
    Par Furior dans le forum Langage
    Réponses: 2
    Dernier message: 10/05/2012, 10h02
  2. Conversion int vers byte non signé
    Par grunk dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 09/06/2011, 16h24
  3. Réponses: 2
    Dernier message: 22/07/2009, 12h11
  4. [TP] Entier 32 bits non signé
    Par SkaMan dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 24/08/2005, 22h17
  5. Combinaisons de type signés et non signés
    Par Hell dans le forum Langage
    Réponses: 4
    Dernier message: 01/11/2004, 19h01

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