【发布时间】:2025-12-14 11:40:01
【问题描述】:
我有一个字节数组。
bytes[] = [43, 0, 0, -13, 114, -75, -2, 2, 20, 0, 0]
我想将它转换为 Java 中的无符号字节。 这就是我所做的:创建一个新数组并使用 & 0xFF 复制值:
this.bytes = new byte[bytes.length];
for (int i=0;i<bytes.length;i++)
this.bytes[i] = (byte) (bytes[i] & 0xFF);
但新数组中的值也保持负数。 我做错了什么?
【问题讨论】:
-
Java 中没有无符号字节。
-
你希望像
byteValue & 0xFF这样的操作会做什么? -
@f1sh 它在将有符号字节转换为无符号
int方面做得正确。如果您只是投射一个带有负值的字节,例如进入int,你最终会得到一个带有负数的int。所以这部分代码不是问题,只是将它放回(即再次转换)到byte的那部分代码最终得到了与您开始时相同的负值。