C#:将数组拆分成n个部分
发布时间:2020-12-15 07:48:37 所属栏目:百科 来源:网络整理
导读:我有一个字节列表,我想把这个列表分成更小的部分. var array = new Listbyte {10,20,30,40,50,60}; 该列表有6个单元格.例如,我想把它分成3个部分,每个2个字节. 我试图写一些for循环,并使用2D数组来实现我的目的,但我不知道这是一个正确的方法. byte[,] array
我有一个字节列表,我想把这个列表分成更小的部分.
var array = new List<byte> {10,20,30,40,50,60}; 该列表有6个单元格.例如,我想把它分成3个部分,每个2个字节. 我试图写一些for循环,并使用2D数组来实现我的目的,但我不知道这是一个正确的方法. byte[,] array2D = new byte[window,lst.Count / window]; var current = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { array2D[i,j] = lst[current++]; } } 解决方法
一个很好的方法是创建一个通用/扩展方法来分割任何数组.这是我的:
/// <summary> /// Splits an array into several smaller arrays. /// </summary> /// <typeparam name="T">The type of the array.</typeparam> /// <param name="array">The array to split.</param> /// <param name="size">The size of the smaller arrays.</param> /// <returns>An array containing smaller arrays.</returns> public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array,int size) { for (var i = 0; i < (float)array.Length / size; i++) { yield return array.Skip(i * size).Take(size); } } 此外,这种解决方案推迟了.然后,只需在数组上调用split(size)即可. var array = new byte[] {10,50}; var splitArray = array.Split(2); 根据要求,这里是一个通用/扩展方法来从数组中获取正方形的2D数组: public static T[,] ToSquare2D<T>(this T[] array,int size) { var buffer = new T[(int)Math.Ceiling((double)array.Length/size),size]; for (var i = 0; i < (float)array.Length / size; i++) { for (var j = 0; j < size; j++) { buffer[i,j] = array[i + j]; } } return buffer; } 玩的开心 :) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |