2012-03-19 68 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