2012-03-19 61 views
1

我有我想转换为byte[]对象数组到字节数组

List这样定义对象的List

List<object> objects = new List<object> 
{ 
    "obj1", "obj2", "obj2" 
}; 

是否有可能这个列表转换为byte[]在一些干净的方式?该列表仅包含base64

所有帮助表示赞赏

蛋糕
+3

那么,为什么不'objects'一个'名单'? – 2012-03-19 18:07:24

+0

“干净”是什么意思?您是否考虑过使用.NET框架提供的一种序列化机制,例如二进制或SOAP格式? – 2012-03-19 18:08:09

回答

4

海贼王:

objects.Select(s => Convert.FromBase64String(s)).SelectMany(i => i).ToArray(); 

如果objects真是List<Object>作为@AustinSalonen指出,相对于一个List<String>,你需要请确保您只有第一个字符串:

objects.OfType<String>().Select(s => Convert.FromBase64String(s)).SelectMany(i => i).ToArray(); 

或演员表:

objects.Cast<String>().Select(s => Convert.FromBase64String(s)).SelectMany(i => i).ToArray(); 
+0

感谢您的回答。是的,我希望将所有数据整合到一个大阵列中。 – 2012-03-19 18:13:09

+0

编辑,见上面 – 2012-03-19 18:15:48

+0

非常感谢。我还有最后一个问题,如果最后一个不是base64字符串的项目呢?如果它没有太大的价值,我想为非base64项目提供解决方案。可能吗? – 2012-03-19 18:22:46

1

这应该字符串的工作:

System.Text.Encoding enc = System.Text.Encoding.ASCII; // Choose the right encoding here 
List<byte[]> list = objects.Select(o=>enc.GetBytes(o.ToString()).ToList(); 
+0

这些字符串是base64 – 2012-03-19 18:10:05