我知道 - 在 Java 中 - int 是 4 个字节。但我希望将 int 转换为 n 字节数组,其中 n 可以是 1、2、3 或 4 个字节。我想将它作为带符号的字节/字节,这样如果我需要将它们转换回 int(如果它是 1 个字节,则事件),我会得到相同的带符号的 int。我完全意识到从 int 转换为 3 或更低字节时精度损失的可能性。
我设法从 int 转换为 n 字节,但将其转换回负数会产生无符号结果。
编辑:
int 到字节(参数 n 指定所需的字节数 1、2、3 或 4,而不管可能的进动损失)
public static byte[] intToBytes(int x, int n) {
byte[] bytes = new byte[n];
for (int i = 0; i < n; i++, x >>>= 8)
bytes[i] = (byte) (x & 0xFF);
return bytes;
}
字节到 int(不管 1、2、3 或 4 有多少字节)
public static int bytesToInt(byte[] x) {
int value = 0;
for(int i = 0; i < x.length; i++)
value += ((long) x[i] & 0xffL) << (8 * i);
return value;
}
字节到 int 转换器可能存在问题。