我知道在Java中,int类型占用4个字节。但我希望将一个int类型的数值转换成n个字节的数组,其中n可以是1、2、3或4个字节。我想要得到有符号的字节/字节数组,这样即使我需要将它们转换回int类型(即使它只有1个字节),我也能得到相同的有符号整数。我完全意识到从int类型转换为3个或更少字节时可能会存在精度损失的可能性。
我已经成功地将int类型转换为n个字节,但是将其转换回负数时会产生无符号结果。
编辑:
将int类型转换为字节数组(参数n指定所需的字节数,可以是1、2、3或4个字节,无论可能的精度损失如何)。
我已经成功地将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;
}
将字节转换为整数(不考虑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;
}
字节转整数可能存在问题。
BigInteger
进行解码。 - Marko Topolnik