byte数组处理bean

/**
 * byte数组处理bean,若指定了byte数组的长度,运行就很快,长音频可用list形式添加
 */
public class ByteArrayBean {

    private byte[] bytes = new byte[0];

    private int index = 0;//byte数组被使用的最大数组下标

    private int usedLen = 1;//byte数组被使用的最大长度

    public ByteArrayBean() {
    }

    public ByteArrayBean(int length) {
        this.bytes = new byte[length];
    }


    /**
     * 添加byte数组
     *
     * @param toAddBytes
     * @return
     */
    public byte[] add(byte[] toAddBytes) {
        //计算byte数组剩余空闲长度和被添加byte数组长度的大小
        int len = bytes.length - usedLen - toAddBytes.length;
        if (len < 0) {
            //扩容
            byte[] newBytes = new byte[this.bytes.length + Math.abs(len)];
            for (int i = 0; i < this.bytes.length; i++) {
                newBytes[i] = this.bytes[i];
            }
            this.bytes = newBytes;
        }
        //添加
        for (int i = 0; i < toAddBytes.length; i++) {
            this.bytes[i + index] = toAddBytes[i];
            usedLen++;
        }
        index = usedLen - 1;
        return this.bytes;
    }


    /**
     * 通过list集合的形式添加
     *
     * @param bytesList
     * @return
     */
    public byte[] add(List<byte[]> bytesList) {
        int len = getLength(bytesList);
        this.bytes = new byte[len];
        for (byte[] by : bytesList) {
            add(by);
        }
        return this.bytes;
    }

    /**
     * 获取byte数组需要的长度
     *
     * @param bytesList
     * @return
     */
    private int getLength(List<byte[]> bytesList) {
        int len = 0;
        for (byte[] by : bytesList) {
            len += by.length;
        }
        return len;
    }


    /**
     * 获取合并后的byte数组
     *
     * @return
     */
    public byte[] get() {
        return this.bytes;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值