javaunsigned

Can we make unsigned byte in Java


I am trying to convert a signed byte in unsigned. The problem is the data I am receiving is unsigned and Java does not support unsigned byte, so when it reads the data it treats it as signed.

I tried it to convert it by the following solution I got from Stack Overflow.

public static int unsignedToBytes(byte a)
{
    int b = a & 0xFF;
    return b;
}

But when again it's converted in byte, I get the same signed data. I am trying to use this data as a parameter to a function of Java that accepts only a byte as parameter, so I can't use any other data type. How can I fix this problem?


Solution

  • I'm not sure I understand your question.

    I just tried this and for byte -12 (signed value) it returned integer 244 (equivalent to unsigned byte value but typed as an int):

      public static int unsignedToBytes(byte b) {
        return b & 0xFF;
      }
    
      public static void main(String[] args) {
        System.out.println(unsignedToBytes((byte) -12));
      }
    

    Is it what you want to do?

    Java does not allow to express 244 as a byte value, as would C. To express positive integers above Byte.MAX_VALUE (127) you have to use a different integral type, like short, int or long.