【发布时间】:2011-03-23 01:13:49
【问题描述】:
我在使用这两个函数时遇到了一些困难: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 '[B@459189e1'
System.out.println(a2); // prints '2063597568
System.out.println(intToByteArray(a2)); // prints '[B@459189e1'
}
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;
}
【问题讨论】:
-
尝试删除
byteArrayToInt中的循环。
标签: java