将字节数组转换为列表Windows Phone 8

时间:2013-03-20 06:54:21

标签: windows-phone-8

我正在使用这段代码将List转换为字节数组,但我又要将此数据转换为List如何实现。

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

1 个答案:

答案 0 :(得分:1)

在您的示例中,这是不可能的,因为您无法分辨字符串的结束位置以及下一个字符串的开始位置。可以使用分隔符(字符\ 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方法检索列表:

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

但总的来说,我认为这不是一个好主意。根据您的需要,我建议您使用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);
}