我正在尝试将无符号字节转换为带符号字节。问题是我接收的数据是无符号的,并且Java不支持无符号字节,因此当它读取数据时,会将其视为已签名。
我尝试通过从Stack Overflow获得的以下解决方案将其转换。
public static int unsignedToBytes(byte a) { int b = a & 0xFF; return b; }
但是当再次将其转换为字节时,我得到了相同的签名数据。我试图将这些数据用作Java函数的参数,该Java函数仅接受字节作为参数,因此我不能使用任何其他数据类型。我该如何解决这个问题?
我不确定我是否理解你的问题。
我刚刚尝试过,对于字节-12(有符号值),它返回整数244(等效于无符号字节值,但键入为int):
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),你必须使用其他整型一样short,int或long。
byte
Byte.MAX_VALUE(127)
short
long