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 unsigned
mot - clé. A byte
selon la spécification de la langue représente une valeur comprise entre -128 - 127. Par exemple, si un byte
est castée int
Java interprétera le premier bit comme le signe et l' utilisation extension de signe .
Cela étant dit, rien ne vous empêche de visualiser byte
simplement 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));