C# 转换列表<;int[]>;到字节[]

C# 转换列表<;int[]>;到字节[],c#,.net,C#,.net,如何将列表转换为字节[] 我可以用这个: byte[] bytes = lista.SelectMany(BitConverter.GetBytes).ToArray(); 但它只适用于列表。如果您没有什么想法,欢迎使用最有效的方法。var listofIntary=new List ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(

如何将
列表
转换为
字节[]

我可以用这个:

 byte[] bytes = lista.SelectMany(BitConverter.GetBytes).ToArray();
但它只适用于
列表
。如果您没有什么想法,欢迎使用最有效的方法。

var listofIntary=new List
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(list);
byte[] bytes = bos.toByteArray();
{ 新[]{1,2,3}, 新[]{4,5}, 新[]{6} }; var listOfBytes=新列表(); foreach(列表中的var intArray) { var listOfByteArray=intArray.Select(BitConverter.GetBytes); foreach(listOfByteArray中的var byteArray) { AddRange(byteArray)的字节列表; } }
var listofIntary=新列表
{
新[]{1,2,3},
新[]{4,5},
新[]{6}
};
var listOfBytes=新列表();
foreach(列表中的var intArray)
{
var listOfByteArray=intArray.Select(BitConverter.GetBytes);
foreach(listOfByteArray中的var byteArray)
{
AddRange(byteArray)的字节列表;
}
}
这个怎么样:

byte[] bytes =
    lista
    .SelectMany(x => x)
    .SelectMany(BitConverter.GetBytes)
    .ToArray();
更新:

要将结果转换为
列表
,可以执行以下操作:

List<int> list =
    bytes
        .Select((item, index) => new {item, index})
        .GroupBy(x => x.index/4)
        .Select(g => g.Select(x => x.item).ToArray())
        .Select(x => BitConverter.ToInt32(x, 0))
        .ToList();
列表=
字节
.Select((项,索引)=>new{item,index})
.GroupBy(x=>x.index/4)
.Select(g=>g.Select(x=>x.item).ToArray()
.Select(x=>BitConverter.ToInt32(x,0))
.ToList();
这个怎么样:

byte[] bytes =
    lista
    .SelectMany(x => x)
    .SelectMany(BitConverter.GetBytes)
    .ToArray();
更新:

要将结果转换为
列表
,可以执行以下操作:

List<int> list =
    bytes
        .Select((item, index) => new {item, index})
        .GroupBy(x => x.index/4)
        .Select(g => g.Select(x => x.item).ToArray())
        .Select(x => BitConverter.ToInt32(x, 0))
        .ToList();
列表=
字节
.Select((项,索引)=>new{item,index})
.GroupBy(x=>x.index/4)
.Select(g=>g.Select(x=>x.item).ToArray()
.Select(x=>BitConverter.ToInt32(x,0))
.ToList();

如果您有意使用
位转换器,您可以使用它(将分别输出整数的所有4个字节)

为了完整起见:

List<int> reversed = Enumerable.Range(0, buffer.Length / 4)
                               .Select(x => BitConverter.ToInt32(buffer, x * 4))
                               .ToList();

如果您有意使用
位转换器
,则可以使用此功能(将分别输出整数的所有4个字节)

为了完整起见:

List<int> reversed = Enumerable.Range(0, buffer.Length / 4)
                               .Select(x => BitConverter.ToInt32(buffer, x * 4))
                               .ToList();

抱歉,我没有提到我需要c#示例抱歉,我没有提到我需要c#示例如果其中一个int超出了一个字节的范围,那么预期的行为是什么?例如1000000。有输入/输出数据可能是什么的示例吗?@MikeChristensen,OP给出的示例将每个
int
转换为4个字节。如果其中一个int超出一个字节的范围,预期的行为是什么?例如,1000000。得到输入/输出数据可能是什么的示例吗?@MikeChristensen,OP给出的示例将每个
int
转换为4个字节。当您将部分转换回时,您能发布它吗?谢谢你advance@KKKk,您无法将其转换回
列表
。只需列出
@YacoubMassad你是对的。我想把它转换回列表也能解决我的问题。当你把它转换回列表的时候,你能发布部分吗?谢谢你advance@KKKk,您无法将其转换回
列表
。只需列出@YacoubMassad你是对的。我想把它转换回列表也能解决我的问题。@kkk,我很高兴我能做到help@KKKk,我很高兴能帮上忙
var result = lista.SelectMany(x => x.SelectMany(y => BitConverter.GetBytes(y))).ToArray();