com.firefly.utils.codec.ByteArrayUtils Maven / Gradle / Ivy
package com.firefly.utils.codec;
import java.util.ArrayList;
import java.util.List;
public abstract class ByteArrayUtils {
public static List splitData(byte[] data, int size, int part) {
if(size > data.length)
throw new IllegalArgumentException("the part size is greater than data's length");
List list = new ArrayList<>();
int srcPos = 0;
int len = size;
byte[] dest = null;
int blocks = part - 1;
for(int i = 0; i < blocks; i++) {
dest = new byte[len];
System.arraycopy(data, srcPos, dest, 0, dest.length);
list.add(dest);
srcPos = srcPos + len;
if(srcPos >= data.length)
return list;
len = Math.min(data.length - srcPos, size);
}
dest = new byte[data.length - srcPos];
System.arraycopy(data, srcPos, dest, 0, dest.length);
list.add(dest);
return list;
}
public static List splitData(byte[] data, int size) {
if(size > data.length)
throw new IllegalArgumentException("the part size is greater than data's length");
List list = new ArrayList<>();
int srcPos = 0;
int len = size;
byte[] dest = null;
while(true) {
dest = new byte[len];
System.arraycopy(data, srcPos, dest, 0, len);
list.add(dest);
srcPos = srcPos + len;
if(srcPos >= data.length)
break;
len = Math.min(data.length - srcPos, size);
}
return list;
}
}