0

このコードを使用して 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();
4

1 に答える 1

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);
}
于 2013-03-20T07:18:28.710 に答える