Die Java-Sprache bietet so etwas wie das unsigned
Schlüsselwort nicht. A byte
gemäß der Sprachspezifikation stellt einen Wert zwischen –128 - 127 dar. Wenn beispielsweise a byte
in int
Java umgewandelt wird, wird das erste Bit als Zeichen interpretiert und die Zeichenerweiterung verwendet .
Abgesehen davon hindert Sie nichts daran, byte
einfach 8 Bits anzuzeigen und diese Bits als Wert zwischen 0 und 255 zu interpretieren. Denken Sie jedoch daran, dass Sie nichts tun können, um Ihre Interpretation der Methode eines anderen aufzuzwingen. Wenn eine Methode a akzeptiert byte
, akzeptiert diese Methode einen Wert zwischen –128 und 127, sofern nicht ausdrücklich anders angegeben.
Hier sind einige nützliche Konvertierungen / Manipulationen für Ihre Bequemlichkeit:
Konvertierungen von / nach int
// From int to unsigned byte
int i = 200; // some value between 0 and 255
byte b = (byte) i; // 8 bits representing that value
// From unsigned byte to int
byte b = 123; // 8 bits representing a value between 0 and 255
int i = b & 0xFF; // an int representing the same value
(Wenn Sie Java 8+ verwenden, verwenden Sie Byte.toUnsignedInt
.)
Analysieren / Formatieren
Am besten verwenden Sie die oben genannten Konvertierungen:
// Parse an unsigned byte
byte b = (byte) Integer.parseInt("200");
// Print an unsigned byte
System.out.println("Value of my unsigned byte: " + (b & 0xFF));
Arithmetik
Die 2-Komplement-Darstellung "funktioniert einfach" für Addition, Subtraktion und Multiplikation:
// two unsigned bytes
byte b1 = (byte) 200;
byte b2 = (byte) 15;
byte sum = (byte) (b1 + b2); // 215
byte diff = (byte) (b1 - b2); // 185
byte prod = (byte) (b2 * b2); // 225
Die Division erfordert die manuelle Konvertierung von Operanden:
byte ratio = (byte) ((b1 & 0xFF) / (b2 & 0xFF));