Unsigned byte

dudulebzh35 Messages postés 23 Date d'inscription mardi 23 novembre 2004 Statut Membre Dernière intervention 8 juin 2009 - 19 déc. 2004 à 13:26
Quazar Messages postés 84 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 6 octobre 2006 - 24 déc. 2004 à 11:48
bonjour a tous,

je souhaite utiliser un byte nom signé (unsigned byte) or ca n'existe pas, comment faire ?
en vous remerciant
a++

2 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
19 déc. 2004 à 16:07
:big) Neodante :big)

Je te dirais d'utiliser simplement un short ou alors de faire un masque et un décalage de bits à chaque lecture/écriture ... le short est plus ympa et plus pratique à moins que u es beaucoup de donénes de ce type à stocker ... sinon on envisagera une autre solution ou regarde sur le forum une question de ce type à été posé il y a quelques semaines ...
@+

[Responsable www.neogamedev.com et Admin CS]
0
Quazar Messages postés 84 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 6 octobre 2006
24 déc. 2004 à 11:48
L'avantage du byte c'est qu'il fait huit bits mais un de ces bits, le poids le plus fort, est un bit de signe. Par conséquent tu ne mettre que les entier de -128 a 127... ce qui est pas mal contraignant quant on tracvaille avec de l'ASCII étendu par exemple (8 bit).

Pour gérer ce probleme, j'utilise deux methodes de conversion : intToByte(int) et byteToInt(byte) qui font des manipulations de signe (du bidouillage en quelque sorte)
De cette façon je peux travailler sans me pérocupper de mon bit de signe.

Je te laisse le code (Copier-coller) des deux méthodes, il serait peut etyre judicieux d'utiliser un short au lieu d'un int. Il y a d autre méthode bien sur et certainement meilleur mais bon ... celle la c'est moi qui l'est fait :)

public class TestRapide {

public static void main(String[] args) {
int i = 202;
byte b = intToByte(i);
System.out.println("Valeur de l'entier a mettre dans un byte : " + i);
System.out.println("Lecture du byte : " + b);
System.out.println("Lecture du byte avec conversion : " + byteToInt(b));

}

/**
* Méthode utilitaire de conversion de int en byte
*/
public static byte intToByte(int iIn){
if(iIn <= 255){
if(iIn > 127){
byte bRet = (byte)(-(-iIn) & 0xff);

return bRet;
}else
return (byte)iIn;
}else
return 0;
}
/**
* Conversion d'un byte en int
*/
public static int byteToInt(byte bIn){
if((bIn > 127) || (bIn < -128))
return 0;
else{
if(bIn >= 0)
return (int)bIn;
else{
return (-(-(int)bIn) & 0xff);
}
}
}
}

Vers l'infini et au delà... [Q]
0
Rejoignez-nous