有什么办法可以在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