C#byte []返回List <int> </int>

时间:2011-12-17 06:12:35

标签: c#

我有一个List,我正在转换为byte [],如下所示:

List<int> integerList = new List<int>();

integerList.Add(1);
integerList.Add(2);
integerList.Add(3);

byte[] bytes = integerList.SelectMany(BitConverter.GetBytes).ToArray();

如何将其转换回List?

2 个答案:

答案 0 :(得分:16)

其中一种方法(LINQ):

var originalList = Enumerable.Range(0, bytes.Length / 4)
                             .Select(i => BitConverter.ToInt32(bytes, i * 4))
                             .ToList();

次要更新:

你也可以写一个方便的通用版本(以防万一你需要使用其他类型):

static List<T> ToListOf<T>(byte[] array, Func<byte[], int, T> bitConverter)
{
    var size = Marshal.SizeOf(typeof(T));
    return Enumerable.Range(0, array.Length / size)
                     .Select(i => bitConverter(array, i * size))
                     .ToList();
}

用法:

var originalList = ToListOf<int>(bytes, BitConverter.ToInt32);

答案 1 :(得分:1)

byte[] is an IEnumerable; LINQ's ToList() extension method should do it.

编辑:如果你想要一个int列表:

bytes.Select((b) => (int)b).toList();