有什么办法可以在int[]byte[]之间进行静态转换吗?

我想要的只是获取int[]作为byte[]的引用,而无需在它们之间进行任何数字转换,并且如果可能的话,也不必复制。

最佳答案

有什么办法可以在int []和byte []之间进行静态转换吗?


简短的回答,不。

但是您可以将byte[]包裹在ByteBuffer中,并从中获取IntBuffer,或者仅使用其getInt()/putInt()方法。

在许多情况下,即使不完全符合您的要求,也可以满足您的要求。

就像是:

byte[] bytes ...;
ByteBuffer buffer = ByteBuffer.wrap(bytes); // No copy, changes are reflected

int foo = buffer.getInt(0); // get int value from buffer

foo *= 2;
buffer.putInt(0, foo); // write int value to buffer

// Or perhaps
IntBuffer intBuffer = buffer.asIntBuffer(); // Creates an int "view" (no copy)
int bar = intBuffer.get(0);
intBuffer.set(0, bar);


使用多字节值(例如int)时,字节缓冲区的字节顺序可以使用以下方法控制:

buffer.order(ByteOrder.BIG_ENDIAN); // Default is platform specific, I believe

07-24 15:22