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).
Version imprimable
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).
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 ^^')Citation:
Envoyé par White Rabbit
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 :
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:
1
2
3
4
5
6
7 char car; for (car=0; car<=255; car++) { System.out.println(car+" "+(byte)car+" "+(int)car); }
Code:
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)); } }
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...
Le seul moyen est de faire un cast avec &0xFF.
Voici un exemple
http://www.rgagnon.com/javadetails/java-0026.html