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();