Java Bitwise Or Between Byte and Int
Asked Answered
L

1

5

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).

Libbylibeccio answered 28/1, 2015 at 22:13 Comment(1)
"without using a bit mask" The answer is to use a bitmask. There isn't really a way around that in Java.Vladivostok
K
7

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);
Knowall answered 28/1, 2015 at 22:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.