I have a array of bytes.
bytes[] = [43, 0, 0, -13, 114, -75, -2, 2, 20, 0, 0]
I want to convert it to unsigned bytes in Java. this is what I did: created a new array and copy the values with & 0xFF:
this.bytes = new byte[bytes.length];
for (int i=0;i<bytes.length;i++)
this.bytes[i] = (byte) (bytes[i] & 0xFF);
but the values stay negative in the new array as well. what am I doing wrong?
bytes
in Java are always signed.
If you want to obtained the unsigned value of these bytes, you can store them in an int
array:
byte[] signed = {43, 0, 0, -13, 114, -75, -2, 2, 20, 0, 0};
int[] unsigned = new int[signed.length];
for (int i = 0; i < signed.length; i++) {
unsigned[i] = signed[i] & 0xFF;
}
You'll get the following values:
[43, 0, 0, 243, 114, 181, 254, 2, 20, 0, 0]
Java has no thing called an unsigned byte. You have to use other types like short
or int
to be able to hold values > 127.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With