有几个问题,首先是关于这个方法,它将 a 转换int[]
为 a byte[]
:
public static byte[] intToByte(int[] input){
ByteBuffer byteBuffer = ByteBuffer.allocate(input.length * 4);
IntBuffer intBuffer = byteBuffer.asIntBuffer();
intBuffer.put(input);
byte[] array = byteBuffer.array();
return array;
}
我正在制作游戏,我必须通过套接字发送一个字节数组,我喜欢这种方法,因为它基本上可以工作,但我不喜欢使用任何我不真正理解它在做什么的东西,所以你能给我一些见解这个方法在做什么?我相信它首先为比特创造了足够的空间,但为什么它的长度会“乘以”四?intBuffer 是否连接到 byteBuffer?因为如果不是,你为什么需要所有 Intbuffer 的东西。
好的,最后一个问题,与BIG_ENDIAN
vs.有什么关系LITTLE_ENDIAN
?例如,在我的其他方法中,将字节数组转换为 int 数组,包含有什么好处.order(BIG_ENDIAN)
?
public static int[] byteToInt(byte[] input){
IntBuffer intBuf = ByteBuffer.wrap(input).order(ByteOrder.BIG_ENDIAN).asIntBuffer();
int[] array = new int[intBuf.remaining()];
intBuf.get(array);
return array;
}
我知道BIG_ENDIAN
并且LITTLE_ENDIAN
只是指定字节的顺序,但为什么还要定义字节序呢?为什么不只是有这个?
IntBuffer intBuf = ByteBuffer.wrap(input).asIntBuffer();