gpt4 book ai didi

c# - 将数组划分为子序列数组的数组

转载 作者:可可西里 更新时间:2023-11-01 08:30:32 26 4
gpt4 key购买 nike

我有一个字节数组:

byte[] bytes;  // many elements

我需要将它分成 X 元素的字节数组的子序列。例如,x = 4。

如果 bytes.Length 不乘以 X,则将 0 添加到最后一个子序列数组,因此所有子序列的长度必须是 X

Linq 可用。

PS:我的尝试

static void Main(string[] args)
{
List<byte> bytes = new List<byte>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

int c = bytes.Count / 4;

for (int i = 0; i <= c; i+=4)
{
int diff = bytes.Count - 4;

if (diff < 0)
{

}
else
{
List<byte> b = bytes.GetRange(i, 4);
}
}

Console.ReadKey();
}

最佳答案

这很可爱:

static class ChunkExtension
{
public static IEnumerable<T[]> Chunkify<T>(
this IEnumerable<T> source, int size)
{
if (source == null) throw new ArgumentNullException("source");
if (size < 1) throw new ArgumentOutOfRangeException("size");
using (var iter = source.GetEnumerator())
{
while (iter.MoveNext())
{
var chunk = new T[size];
chunk[0] = iter.Current;
for (int i = 1; i < size && iter.MoveNext(); i++)
{
chunk[i] = iter.Current;
}
yield return chunk;
}
}
}
}
static class Program
{
static void Main(string[] args)
{
List<byte> bytes = new List<byte>() {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
var chunks = bytes.Chunkify(4);
foreach (byte[] chunk in chunks)
{
foreach (byte b in chunk) Console.Write(b.ToString("x2") + " ");
Console.WriteLine();
}
}
}

关于c# - 将数组划分为子序列数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3210824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com