Java将int []转换为byte []而不进行转换

时间:2014-03-27 10:53:39

标签: java arrays casting

有没有办法在int[]byte[]之间进行静态演员?

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

3 个答案:

答案 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];
    }
}