2013-03-20 77 views
0

我用这一段代码列表转换成字节数组,但我再次要转换为这个数据到列表它是如何可能。转换字节数组转换为列表Windows手机8

List<String> stringlist = new List<String>(); 
stringlist.Add("Oye Oye"); 
stringlist.Add("Hello hello"); 
byte[] byteArr = stringlist.SelectMany(s => System.Text.Encoding.UTF8.GetBytes(s)).ToArray(); 
+0

我不认为这是可能的,因为其中一个字符串结束和另一个开始你丢失的信息。 – MarcinJuraszek 2013-03-20 06:56:42

回答

1

在你的例子中,这是不可能的,因为你无法判断一个字符串的结束位置和下一个位置的起始位置。这将有可能通过使用分隔符(字符\ 0通常用于表示一个字符串的结尾):

var stringList = System.Text.Encoding.UTF8.GetString(byteArr, 0, byteArr.Length).Split('\0'); 

List<String> stringlist = new List<String>(); 
stringlist.Add("Oye Oye"); 
stringlist.Add("Hello hello"); 
byte[] byteArr = stringlist.SelectMany(s => System.Text.Encoding.UTF8.GetBytes(s + '\0').ToArray(); 

然后,您可以通过使用Split方法来检索列表

但总体而言,我不认为这是一个好主意。根据你需要什么,我宁愿建议使用DataContractSerializer你的数组转换为字节:

var serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(List<string>)); 

byte[] byteArr; 

using (var ms = new System.IO.MemoryStream()) 
{ 
    serializer.WriteObject(ms, stringlist); 
    byteArr = ms.ToArray(); 
} 

而且将其转换回:

using (var ms = new System.IO.MemoryStream(byteArr)) 
{ 
    stringlist = (Sserializer.ReadObject(ms); 
} 
+0

非常感谢它的正常工作对我来说.. – Mohit 2013-03-20 10:09:14

+0

我们可以转换包含通过使用序列号线的对象和图像对象的列表? – Mohit 2013-03-22 10:29:58