超强的byte[] 数组帮助类
2011-03-20 09:15
155 查看
最近项目中有一个地方需要处理多个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
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
相关文章推荐
- Iphone开发-NSdata 与 NSString,Byte数组,UIImage 的相互转换
- Java中byte数组与long数组相互转化
- Java 字节数组类型(byte[])与int类型互转
- JAVA中 byte[]数组如何转为InputStream
- C#用byte[]字节数组获取C中byte*指针
- 数据转换 long与byte数组的转换
- NSdata 与 NSString,Byte数组,UIImage 的相互转换---ios开发 Objective-C
- 整型int和字节数组byte相互转换
- 浮点数转byte数组
- 将Byte数组转化为String
- 字符串与byte数组的转换
- NSData 与 NSString,Byte数组,UIImage 的相互转换
- Java 文件和byte数组转换
- java byte数组与int,long,short,byte转换
- 在byte数组中搜索byte[]
- java对象和byte数组互转,直接拿去用
- java里面byte数组和String字符串怎么转换
- byte数组转换为字符串
- 【转】c# int 和 byte数组 互相 转换
- Java之——基本数据类型与byte数组相互转化