环境:vs2003 winform程序,
有一个savelist,里面装的每一个对象都是byte[20],我想把savelist中所有的对象取出来,存到一个
byte[20*list.Count]中去,有什么好办法?下面是我写的代码, 可以实现该功能,但比较麻烦,用到 一个临时数组,还要用到两层的for循环,有没有高手指点一下,弄个更好的方法.
public ArrayList saveList = new ArrayList ( );
int count = saveList.Count; //记录有多少个20个字节的包
byte[] arraybyte= new byte[ 20*count ];
for ( i=0;i < count;i++)
{
byte[] tempa = new byte[20];
tempa = (byte[])saveList[i];
for( j =0;j<20;j++)
{
arraybyte[i*20+j] = tempa[j];
}
}
有一个savelist,里面装的每一个对象都是byte[20],我想把savelist中所有的对象取出来,存到一个
byte[20*list.Count]中去,有什么好办法?下面是我写的代码, 可以实现该功能,但比较麻烦,用到 一个临时数组,还要用到两层的for循环,有没有高手指点一下,弄个更好的方法.
public ArrayList saveList = new ArrayList ( );
int count = saveList.Count; //记录有多少个20个字节的包
byte[] arraybyte= new byte[ 20*count ];
for ( i=0;i < count;i++)
{
byte[] tempa = new byte[20];
tempa = (byte[])saveList[i];
for( j =0;j<20;j++)
{
arraybyte[i*20+j] = tempa[j];
}
}
解决方案 »
- C# 怎样使pictureBox上的控件随图片大小的变化而变化
- 请教 datagridview
- 单击listview中的项,然后用datareader将它所在的记录读出来。sql语句应该样写。我是这样写的,有问题。
- 给一个用oledb 方法读取 ACCESS数据库 将其中一项添加到comboBox的方法 谢谢
- 求一种模式或解决方法:
- asp.net的cs中怎么判断一个字符串是否是手机号码(不用正则表达式)?
- LinkButton怎么做链接
- 取字符串的问题
- 奇怪,在父类竞然没办法扔出一个exception
- 有谁能告诉我c#与asp.net的关系?
- WebForm中如用在GridView中显示几万条记录?
- 我的NHIbernate老出错,有没有一个可以运行成功的例子?
int index =0;
foreach(object o in list)
{
byte[] array = (byte[]) o;
// you process
for(int i = 0; i < array.length; ++i)
{arraybyte[index] = array[i];
++index;
}
}
ArrayList有个CopyTo的方法,可以把其里面的数据拷贝到数组.
如:
ArrayList al = new ArrayList();
al.Add("a");//可以是对象
al.Add("b");string[] arra = new String[al.Count];
al.CopyTo(arra);
//那么这就将al数据拷贝到arra中了。
-----------------------
www.notsoft.cn
但它进行复制时是怎么复制的呢??我认为不还是一个一个的吗??
代码简单了...呵呵
byte[] b2 = new byte[]{4,5,6}; ArrayList list = new ArrayList();
list.AddRange(b1);
list.AddRange(b2); byte[] rerultBytes = new byte[list.Count];
list.CopyTo(rerultBytes);
To:mythofcynthia(Blue)
foreach(object o in list) 内容临时数组用不用都是可以的,主要是希望效率更高一些,saveList里起码有10万以上的对象(每个对象是一个byte[20]),用foreach 与 用普通的for
循环相比哪个效率更好些呢?To:lovvver(EBright软件) ( )
恩,我也想过用Copyto 预想用其本身自带的函数也许会更快一些,难点在于里面的是byte[20]的对象,而这边是个字节数组而已,类型是不一样的,放到byte里是要用的,要不你取出来还是一个byte[20]的对象,就还得转化,画的时间将更长,
用CopyTo是否效率更高一些,大家一起来学习,呵呵
请兄弟您根据要求,将代码帖出来大家分析一下好吗?我没接触过这东西
int index = 0;
foreach(object o in list)
{
//System.Buffer.BlockCopy(src, srcOffset, dst, dstOffset, count);
system.buffer.BlockCopy((byte[])o, 0, arraybyte, index * 20, 20);
++index;
}
lovvver(EBright软件)的做法我其实也考虑过,效率有待验证.