Can we make unsigned byte in Java

前端 未结 16 1051
青春惊慌失措
青春惊慌失措 2020-11-22 08:02

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 tr

相关标签:
16条回答
  • 2020-11-22 08:49

    There are no primitive unsigned bytes in Java. The usual thing is to cast it to bigger type:

    int anUnsignedByte = (int) aSignedByte & 0xff;
    
    0 讨论(0)
  • 2020-11-22 08:50

    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.

    0 讨论(0)
  • 2020-11-22 08:51

    A side note, if you want to print it out, you can just say

    byte b = 255;
    System.out.println((b < 0 ? 256 + b : b));
    
    0 讨论(0)
  • 2020-11-22 08:53

    As per limitations in Java, unsigned byte is almost impossible in the current data-type format. You can go for some other libraries of another language for what you are implementing and then you can call them using JNI.

    0 讨论(0)
提交回复
热议问题