拆分字节数组

Tar*_*ngh 29 java arrays byte bytearray

是否有可能从java中的字节数组中获取特定字节?

我有一个字节数组:

byte[] abc = new byte[512]; 
Run Code Online (Sandbox Code Playgroud)

我希望这个数组有3个不同的字节数组.

  1. 字节0-127
  2. 字节128-255
  3. byte256-511.

我试过abc.read(byte[], offset,length)但只有当我将偏移量设为0时才有效,对于任何其他值,它会引发IndexOutOfbounds异常.

我究竟做错了什么?

tan*_*ens 64

你可以用Arrays.copyOfRange()它.

  • 哇.不知道那个. (4认同)
  • @Tara 请注意,结束范围不应与开始范围相同。即如果你从 0,127 中提取,那么它应该是 Arrays.copyOfRange(record,0,128); (2认同)

Boz*_*zho 14

Arrays.copyOfRange()在Java 1.6中引入.如果您有旧版本,则内部使用System.arraycopy(...).以下是它的实现方式:

public static <U> U[] copyOfRange(U[] original, int from, int to) {
    Class<? extends U[]> newType = (Class<? extends U[]>) original.getClass();
    int newLength = to - from;
    if (newLength < 0) {
        throw new IllegalArgumentException(from + " > " + to);
    }
    U[] copy = ((Object) newType == (Object)Object[].class)
        ? (U[]) new Object[newLength]
        : (U[]) Array.newInstance(newType.getComponentType(), newLength);
    System.arraycopy(original, from, copy, 0,
                     Math.min(original.length - from, newLength));
    return copy;
}
Run Code Online (Sandbox Code Playgroud)