我有一个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?
答案 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();