一尘不染

我们可以在Java中制作无符号字节吗

java

我正在尝试将无符号字节转换为带符号字节。问题是我接收的数据是无符号的,并且Java不支持无符号字节,因此当它读取数据时,会将其视为已签名。

我尝试通过从Stack Overflow获得的以下解决方案将其转换。

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

但是当再次将其转换为字节时,我得到了相同的签名数据。我试图将这些数据用作Java函数的参数,该Java函数仅接受字节作为参数,因此我不能使用任何其他数据类型。我该如何解决这个问题?


阅读 340

收藏
2020-03-01

共1个答案

一尘不染

我不确定我是否理解你的问题。

我刚刚尝试过,对于字节-12(有符号值),它返回整数244(等效于无符号字节值,但键入为int):

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

  public static void main(String[] args) {
    System.out.println(unsignedToBytes((byte) -12));
  }

这是你想做的吗?

Java不允许表达244的byte价值,将C.为了表达上述的正整数Byte.MAX_VALUE(127),你必须使用其他整型一样shortintlong

2020-03-01