List l = new ArrayList();
byte[]a={1,2,3,4,5,6,7};
byte[]b=new byte[4];
int c = 0;
for(int i=0;i<alength;i++){
if(i!=0&&i%4==0){
ladd(b);
b=new byte[4];
c=0;
}
b[c]=a[i];
if(i==alength-1){
ladd(b);
}
c++;
}
for(int i=0;i<lsize();i++){
byte[]bb = (byte[]) lget(i);
for(int y=0;y<bblength;y++){
Systemoutprint(bb[y]);
}
Systemoutprintln("--------");
}
}
没法加了,运行结果是
1234--------
5670--------
因为数组定义长度为4,所以第二个数组最后一个不够默认补0,实现了4个一组存在一个集合里,至于调用方法没明白楼主说的
[]这种形式的数组是固定长度,不能改变数组大小的你要连接,只能用ArrayList或泛型了
byte[] b1=new byte[256];
byte[] b2=new byte[256];
List<byte> b3 = new List<byte>();
b3AddRange(b1);
b3AddRange(b2);
此时b3的大小就是512了,如果你想要byte[],就用b3ToArray()方法可能原因:
1、传入的参数是超出byte范围的,byte类型的取值范围是-128到127,如果传入的值超出了这个范围,就会出现数据类型溢出,导致编译错误或者运行时错误。
2、输入的参数类型不是byte类型,如果传入的参数是整型或其他数据类型,需要强制类型转换为byte类型之后再使用,否则也会报错。
这个实质是内存内容复制的问题,最简单的方法是调用系统的memcpy函数。
函数原型如下:
void memcpy(void dest, const void src, size_t n);
2功能
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
3所需头文件
C语言:#include<stringh>
C++:#include<cstringh>
4返回值
函数返回指向dest的指针。
File f= new File(path);RandomAccessFile reader = new RandomAccessFile(f, "r");
boolean b = true;//用来标记是否独到文件尾
while(b){
byte[] b = new byte[5];
int flag = 0;
try{
flag = readerread(b); //每次读取blength字节,并且将读出来的自己放入b中,flag指的是读出来的字节数,如果没有读出数据,就是-1;
}catch(IOExceptione){
eprintStackTrace();
}
if(0<flag<6){ //控制结尾
for(int i=0;i<blength;i++){
Systemoutprint(b[i]);
}
}else{
b = false
}
}
没测试过,不过应该没什么大问题,自己稍微改下就OK了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)