Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将字节数组索引范围重建为新的字节数组_Java_Arrays_Byte - Fatal编程技术网

Java将字节数组索引范围重建为新的字节数组

Java将字节数组索引范围重建为新的字节数组,java,arrays,byte,Java,Arrays,Byte,我正在尝试从现有的字节数组创建一个全新的字节数组。我的existingBtyeArray从索引0-16中有metadata1,从索引16-33中有metadata2,剩下的将被称为remaining,假设它从索引33到100。现在字节数组的顺序如下: existingBtyeArray = metadata1 (0 - 16) + metadata2 (16 - 33) + remaining (33 - 100) newByteArray = metadata1 + remaining +

我正在尝试从现有的字节数组创建一个全新的字节数组。我的
existingBtyeArray
从索引0-16中有
metadata1
,从索引16-33中有
metadata2
,剩下的将被称为
remaining
,假设它从索引33到100。现在字节数组的顺序如下:

existingBtyeArray = metadata1 (0 - 16) + metadata2 (16 - 33) + remaining (33 - 100)
newByteArray = metadata1 + remaining + metadata2
我想将
metadata2
移到新字节数组的剩余部分,如下所示:

existingBtyeArray = metadata1 (0 - 16) + metadata2 (16 - 33) + remaining (33 - 100)
newByteArray = metadata1 + remaining + metadata2

如何做到这一点

这可以通过使用
System.arraycopy
复制阵列的一部分来完成

public static byte[] reconstruct(byte[] arr){
    byte[] result = new byte[arr.length];
    System.arraycopy(arr, 0, result, 0, 16); //copy metadata1 
    System.arraycopy(arr, 33, result, 16, arr.length-33); //copy remaining 
    System.arraycopy(arr, 16, result, 16 + arr.length-33, 33-16); //copy metadata2 
    return result;
}

这可以通过使用
System.arraycopy
复制阵列的一部分来完成

public static byte[] reconstruct(byte[] arr){
    byte[] result = new byte[arr.length];
    System.arraycopy(arr, 0, result, 0, 16); //copy metadata1 
    System.arraycopy(arr, 33, result, 16, arr.length-33); //copy remaining 
    System.arraycopy(arr, 16, result, 16 + arr.length-33, 33-16); //copy metadata2 
    return result;
}