5

Sto tentando di eseguire un bit per bit o un valore byte in Java.Java Bitwise o Between Byte e Int

Per esempio, io sono in esecuzione:

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

mio risultato atteso per questo sarebbe 0b00000000 00000000 00000000 11111111, o 255. Tuttavia, sto ricevendo -1 o 0b11111111 11111111 11111111 11111111.

sto supponendo che Java converte il mio byte in un int tramite estensione del segno prima di eseguire l'operazione, ed ero solo curioso di sapere se ci fosse un modo per ottenere il mio risultato desiderato senza l'utilizzo di una maschera di bit (0b11111111).

+1

"senza l'utilizzo di una maschera di bit" La risposta è quello di utilizzare una maschera di bit. Non c'è un modo per aggirare questo in Java. –

risposta

7

L'utilizzo di una maschera bit è la soluzione standard per disabilitare l'estensione del segno quando si converte uno byte in uno int. Devi solo accettare questa fetta di bruttezza Java.

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