Removing the first 16 bytes from a byte array

后端 未结 4 1482
一个人的身影
一个人的身影 2021-01-17 15:31

In Java, how do I take a byte[] array and remove the first 16 bytes from the array? I know I might have to do this by copying the array into a new array. Any examples or hel

相关标签:
4条回答
  • 2021-01-17 16:04

    System.arraycopy() also can do that:

    public static byte[] truncate(byte[] bytes, int srcPos, int newLength) {
        if (bytes.length < newLength) {
            return bytes;
        } else {
            byte[] truncated = new byte[newLength];
            System.arraycopy(bytes, srcPos, truncated, 0, newLength);
            return truncated;
        }
    }
    
    0 讨论(0)
  • 2021-01-17 16:09
    byte[] a;
    
    ...
    
    if(a.length > 1) {
        byte[] newA = new byte[a.length-2];
        for(int i = 2; i < a.length; ++i)
            newA[i-2]=a[i];
    }
    
    0 讨论(0)
  • 2021-01-17 16:11
    void remove(byte[] b)
    {
        for(i=16;i<b.length;i++)
        {
            a[i-16]=b[i];
            Process... arrays
        }
    }
    
    0 讨论(0)
  • 2021-01-17 16:18

    See Arrays class in the Java library:

    Arrays.copyOfRange(byte[] original, int from, int to)
    

    from is inclusive, whereas to is exclusive. Both are zero based indices, so to remove the first 16 bytes do

    Arrays.copyOfRange(original, 16, original.length);
    
    0 讨论(0)
提交回复
热议问题