Guide complet pour travailler avec des octets non signés en Java:
(Source de cette réponse.)
Le langage Java ne fournit rien de tel que le unsignedmot - clé. A byteselon la spécification de la langue représente une valeur comprise entre -128 - 127. Par exemple, si un byteest castée intJava interprétera le premier bit comme le signe et l' utilisation extension de signe .
Cela étant dit, rien ne vous empêche de visualiser bytesimplement 8 bits et d'interpréter ces bits comme une valeur comprise entre 0 et 255. Gardez simplement à l'esprit que vous ne pouvez rien faire pour forcer votre interprétation sur la méthode de quelqu'un d'autre. Si une méthode accepte a byte, alors cette méthode accepte une valeur entre −128 et 127 sauf indication contraire explicite.
Voici quelques conversions / manipulations utiles pour votre commodité:
Conversions vers / depuis int
int i = 200;
byte b = (byte) i;
byte b = 123;
int i = b & 0xFF;
(Ou, si vous utilisez Java 8+, utilisez Byte.toUnsignedInt.)
Analyse / formatage
Le meilleur moyen est d'utiliser les conversions ci-dessus:
byte b = (byte) Integer.parseInt("200");
System.out.println("Value of my unsigned byte: " + (b & 0xFF));
Arithmétique
La représentation à 2 compléments "fonctionne juste" pour l'addition, la soustraction et la multiplication:
byte b1 = (byte) 200;
byte b2 = (byte) 15;
byte sum = (byte) (b1 + b2);
byte diff = (byte) (b1 - b2);
byte prod = (byte) (b2 * b2);
La division nécessite une conversion manuelle des opérandes:
byte ratio = (byte) ((b1 & 0xFF) / (b2 & 0xFF));