有没有办法在int[]
和byte[]
之间进行静态演员?
我想要的只是获取int[]
作为byte[]
的引用而不在它们之间进行任何数字转换,如果可能的话,无需复制。
答案 0 :(得分:2)
有没有办法在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
答案 1 :(得分:0)
它们是不同类型的对象,无法按照您想要的方式进行投射。也不是另一个的子类型。你有2个不同的类(不是基元)。
答案 2 :(得分:0)
你的问题不清楚,你想用什么不合适的数据做什么?
一种方法是创建一个实用程序类,让您以这种方式对待它。
即。 :
public class ByteWrapper {
int[] data;
byte get(int i) {
return (byte)data[i];
}
}