如何在Java中拆分字节数组?

时间:2016-04-10 18:36:05

标签: java arrays split byte delimiter

让我们采用这个字节数组:

[FF 11 11 FF FF 22 22 22 FF FF 33 33 33 33 FF]

让我们选择分隔符

[FF]

然后拆分将导致这三个部分:

[11 11] [22 22 22] [33 33 33 33]

1 个答案:

答案 0 :(得分:1)

您可以编写(两种)方法来实现此目的,例如:

private List<byte[]> split(byte[] array, byte value){
    List<byte[]> list = new ArrayList<>();
    List<Byte> subList = new ArrayList<>();
    for(byte element : array){
        if(element == value && !subList.isEmpty()){
            list.add(convertToPrimitiveArray(subList));
            subList = new ArrayList<>();
        }else if(element != value){
            subList.add(element);
        }
    }
    if(!subList.isEmpty()){
        list.add(convertToPrimitiveArray(subList));
    }
    return list;
}

private byte[] convertToPrimitiveArray(List<Byte> list){
    byte[] array = new byte[list.size()];
    for(int i=0 ; i<list.size() ; i++){
        array[i] = list.get(i);
    }
    return array;
}

它通过使用提供的值拆分主数组来返回byte数组的列表。