Search code examples
javabyteint

How to Convert Int to Unsigned Byte and Back


I need to convert a number into an unsigned byte. The number is always less than or equal to 255, and so it will fit in one byte.

I also need to convert that byte back into that number. How would I do that in Java? I've tried several ways and none work. Here's what I'm trying to do now:

int size = 5;
// Convert size int to binary
String sizeStr = Integer.toString(size);
byte binaryByte = Byte.valueOf(sizeStr);

and now to convert that byte back into the number:

Byte test = new Byte(binaryByte);
int msgSize = test.intValue();

Clearly, this does not work. For some reason, it always converts the number into 65. Any suggestions?


Solution

  • A byte is always signed in Java. You may get its unsigned value by binary-anding it with 0xFF, though:

    int i = 234;
    byte b = (byte) i;
    System.out.println(b); // -22
    int i2 = b & 0xFF;
    System.out.println(i2); // 234