超强的byte[] 数组帮助类

最近项目中有一个地方需要处理多个byte[],将各byte[] 拼接,再做逐字节的校验,就写了一个类BytesUtil来处理它。

 view plaincopy to clipboardprint?
package com.util;  
 
/******************************************************************************* 
 *  
 * @author Spirit_demon 
 * @version 1.0 
 * @time 2009-12-21 
 *  
 */ 
 
public class BytesUtil {  
    /*************************************************************************** 
     *  
     * @param src1 
     *            保存的源byte[] 
     * @param src2 
     *            保存的源byte[] 
     * @return 将src1和src2拼接的byte 
     */ 
    public static byte[] addBytes(byte[] src1, byte[] src2) {  
        byte[] dest = new byte[src1.length + src2.length];  
        System.arraycopy(src1, 0, dest, 0, src1.length);  
        System.arraycopy(src2, 0, dest, src1.length, src2.length);  
        return dest;  
    }  
 
    /*************************************************************************** 
     *  
     * @param maxlength 
     *            目标byte的max长度 
     * @param src 
     *            每一个byte[] 
     * @return 目标byte[]数组 
     */ 
    public static byte[] addBytes(int maxlength, byte[]... src) {  
        int length = 0; // 获取每一byte数组的长  
        int index = 0; // 获取复制到目标数组的起始点,  
        byte[] dest = new byte[maxlength]; // 目标数组  
        for (int i = 0; i < src.length; i++) {  
            length = src[i].length;  
            System.arraycopy(src[i], 0, dest, index, length); // 将每一个byte[]  
                                                                // 复制到 目标数组  
            index = index + length; // 起始位置向后挪动byte[]的length  
        }  
 
        // 目标长度的数组不知道长度,在长度不足的情况下,会向后补0,  
        // 所以需要对得到的原始数组做一些处理  
 
        int count = 0;  
        for (int i = 0; i < dest.length; i++) {  
            if (dest[i] == 0) {  
 
                count++; // 统计原始数组补0的个数  
            }  
        }  
        byte[] result = new byte[100 - count]; // 生成新数组保存我们需要的值(非补0)  
        int pos = 0;  
        for (int i = 0; i < result.length; i++) {  
            if (dest[i] != 0) { // 判断是非为0,将不为0的值保存  
                result[pos] = dest[i];  
                pos++;  
            }  
        }  
        return result;  
    }  
 
    // 测试类  
    public static void main(String[] args) {  
        byte[] a = { 1, 2 };  
        byte[] b = { 3, 4 };  
        byte[] c = { 8, 9 };  
        byte[] ax = { 4, 5 };  
        byte[] bx = { 7, 5 };  
        byte[] cx = { 4, 3 };  
        byte[] axx = { 4, 1 };  
        byte[] bxx = { 6, 9 };  
        byte[] cxx = { 8, 10 };  
        byte[] r = BytesUtil.addBytes(100, a, b, c, ax, bx, cx, axx, bxx, cxx);  
 
        System.out.println(java.util.Arrays.toString(r));  
    }  
}
 

本篇文章来源于:开发学院 http://edu.codepub.com   原文链接:http://edu.codepub.com/2009/1221/18882.php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值