Javaのバイト配列から特定のバイトを取得することは可能ですか?
バイト配列があります:
_byte[] abc = new byte[512];
_
そして、私はこの配列から3つの異なるバイト配列が欲しいです。
abc.read(byte[], offset,length)
を試しましたが、オフセットを0として指定した場合にのみ機能します。他の値ではIndexOutOfbounds
例外をスローします。
私は何を間違えていますか?
そのために Arrays.copyOfRange()
を使用できます。
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;
}
元の配列の上部のビューとしてバイトバッファを使用することもできます。