У меня возникают некоторые трудности с этими двумя функциями: byteArrayToInt
и intToByteArray
.
Проблема заключается в том, что если я использую один, чтобы перейти к другому, и это результат для первого, результаты будут разными, как вы можете видеть из моих примеров ниже.
Я не могу найти ошибку в коде. Любые идеи очень приветствуются. Спасибо.
public static void main(String[] args)
{
int a = 123;
byte[] aBytes = intToByteArray(a);
int a2 = byteArrayToInt(aBytes);
System.out.println(a); // prints '123'
System.out.println(aBytes); // prints '[[email protected]'
System.out.println(a2); // prints '2063597568
System.out.println(intToByteArray(a2)); // prints '[[email protected]'
}
public static int byteArrayToInt(byte[] b)
{
int value = 0;
for (int i = 0; i < 4; i++) {
int shift = (4 - 1 - i) * 8;
value += (b[i] & 0x000000FF) << shift;
}
return value;
}
public static byte[] intToByteArray(int a)
{
byte[] ret = new byte[4];
ret[0] = (byte) (a & 0xFF);
ret[1] = (byte) ((a >> 8) & 0xFF);
ret[2] = (byte) ((a >> 16) & 0xFF);
ret[3] = (byte) ((a >> 24) & 0xFF);
return ret;
}