拆分字节数组

2022-09-01 08:04:25

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

我有一个字节数组:

byte[] abc = new byte[512]; 

我想从这个数组中有3个不同的字节数组。

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

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

我做错了什么?


答案 1

你可以使用Arrays.copyOfRange()来实现这一点。


答案 2

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;
}