我试图将一个byte[]数组'a‘放入一个列表'b’中,但它不起作用。假设我有这个字节数组'a‘。
12344
23425
34426
34533我想把它放到一个4项(行数)的列表中,但这行不通。(设置中间byte[],然后添加它)
byte[] a = {1,2,3,4,4,2,3,4,2,5,3,4,4,2,6,3,4,5,3,3};
List<byte[]> b = new List<byte[]>();
byte[] inter_byte= new byte[5];
for (int u=0; u<4; u++)
{
for (int p=0; p<5; p++)
{
inter_byte[u] = file[(5*u) + p];
}
b.Add(inter_byte);
}我得到的是一个4行长的列表,但它是最后一行。做这件事最好的方法是什么?
发布于 2011-02-10 01:01:44
您的字节数组是一个引用类型,这意味着在每个循环中更改它会更改存储的数据。在每个循环中声明它应该是有效的:
byte[] a = {1,2,3,4,4,2,3,4,2,5,3,4,4,2,6,3,4,5,3,3};
List<byte[]> b = new List<byte[]>();
for (int u=0; u<4; u++)
{
byte[] inter_byte= new byte[5];
for (int p=0; p<5; p++)
{
inter_byte[p] = a[(5*u) + p];
}
b.Add(inter_byte);
} 发布于 2011-02-10 01:00:53
您需要在每次迭代中重新分配inter_byte,否则它将被重用,您将替换行。
发布于 2011-02-10 01:26:07
像这样的东西应该就行了。(除非我误解了问题)
List<byte[]> b = a.Select((by, i) => new { group = i / 5, value = by })
.GroupBy(item => item.group)
.Select(group => group.Select(v => v.value).ToArray())
.ToList();将字节分组为数组,每个数组5个,组成一个列表。
https://stackoverflow.com/questions/4948000
复制相似问题