超强的byte[] 数组帮助类

来源:互联网 发布:足球周刊淘宝店的网址 编辑:程序博客网 时间:2024/05/12 21:56

最近项目中有一个地方需要处理多个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

原创粉丝点击