我有一个int数组,我通过使用RobotPeer.getRGBPixels()获得。我将其转换为字节数组通过套接字发送使用:Java - 转换字节[]为int [] rgb
public static byte[] toByteArray(int[] ints){
byte[] bytes = new byte[ints.length * 4];
for (int i = 0; i < ints.length; i++) {
bytes[i * 4] = (byte) (ints[i] & 0xFF);
bytes[i * 4 + 1] = (byte) ((ints[i] & 0xFF00) >> 8);
bytes[i * 4 + 2] = (byte) ((ints[i] & 0xFF0000) >> 16);
bytes[i * 4 + 3] = (byte) ((ints[i] & 0xFF000000) >> 24);
}
return bytes;
}
问题是: 我用这个方法:
public static int[] toIntArray(byte buf[]) {
int intArr[] = new int[buf.length/4];
int offset = 0;
for (int i = 0; i < intArr.length; i++) {
intArr[i] = (buf[3 + offset] & 0xFF) | ((buf[2 + offset] & 0xFF) << 8)
| ((buf[1 + offset] & 0xFF) << 16) | ((buf[0 + offset] & 0xFF) << 24);
offset += 4;
}
return intArr;
}
找回int数组。然后我从它创建BufferedImage,我得到: https://www.dropbox.com/s/p754u3tnivigu70/test.jpeg
请帮我解决这个问题。
你有错误的字节顺序。可能的重复[在Java中的字节数组和整数转换](http://stackoverflow.com/questions/5399798/byte-array-and-int-conversion-in-java) –
使用'ByteBuffer's;他们将为您处理位处理,并且您可以指定使用的字节顺序 – fge
@BrianRoach谢谢,我解决了它。对不起,创建重复的问题,下次我会试图找出答案。 –