Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Bitwise Or Between Byte and Int

I am trying to perform a bitwise or on a byte value I have in Java.

For example, I am running:

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

My expected result for this would be 0b00000000 00000000 00000000 11111111, or 255. However, I am receiving -1, or 0b11111111 11111111 11111111 11111111.

I'm assuming that Java converts my byte into an int via sign extension before performing the operation, and I was just curious if there was a way to get my desired result without using a bit mask (0b11111111).

like image 836
brandonsbarber Avatar asked Jan 28 '15 22:01

brandonsbarber


1 Answers

Using a bit mask is the standard solution to disable sign extension when converting a byte to an int. You'll just have to accept this slice of Java ugliness.

int result = 0 | (b & 0xFF);
like image 54
John Kugelman Avatar answered Oct 14 '22 01:10

John Kugelman