5

Ich versuche, einen bitweisen oder auf einen byte Wert, den ich in Java habe, durchzuführen.Java bitweise oder zwischen Byte und Int

Zum Beispiel habe ich leite:

byte b = (byte)0b11111111; 
int result = 0 | b; 

Mein erwartetes Ergebnis für diesen 0b00000000 00000000 00000000 11111111 wäre, oder 255. Ich erhalte jedoch -1 oder 0b11111111 11111111 11111111 11111111.

Ich gehe davon aus, dass Java konvertiert meine byte in ein int über Vorzeichenerweiterung vor der Durchführung die Operation, und ich war nur neugierig, ob es ein Weg mein gewünschtes Ergebnis zu erhalten, ohne eine Bitmaske (0b11111111).

+1

"ohne Verwendung einer Bitmaske" Die Antwort ist, eine Bitmaske zu verwenden. Es gibt keinen wirklichen Weg in Java. –

Antwort

7

Die Verwendung einer Bitmaske ist die Standardlösung, um die Zeichenerweiterung zu deaktivieren, wenn eine byte in eine int konvertiert wird. Sie müssen dieses Stück Java-Hässlichkeit einfach akzeptieren.

int result = 0 | (b & 0xFF);