将字典或列表转换为byte

好的,我在这里和团结论坛上看到过许多类似的问题,询问从一种格式转换到另一种格式。 我有一个(希望)简单的问题,我找不到答案。 我正在使用Prime31的游戏中心插件来处理基于回合制的多人游戏。 在Prime31的插件中,他们会要求你输出一个字节[]来发送给其他玩家。 (状态数据)所以问题是,将List转换为字节数组然后将它们从字节数组转换回来的好方法是什么?

作为参考,这是我需要的一个复杂的类,我可能需要稍后添加更多的成员,但不是任何不同的类型。 如果这使得将PokerPlayers列表转换为字节[]更容易,那么int的列表(手中的牌)可以很容易地成为4个单独的int。 此列表也不是设定长度,但总是4-8。

public class PokerPlayer{ public string playerID; public string alias; public int wildCard; public List cardsInHand; public int chips; } 

我觉得当我看到答案时,我会因为没有及早看到答案而自责。 任何指向相关材料的指针/链接都是甜蜜的,我现在用谷歌搜索了3个小时,类似(SO类似)但不完全相同的问题。

您可能想尝试序列化。

 var binFormatter = new BinaryFormatter(); var mStream = new MemoryStream(); binFormatter.Serialize(mStream, myObjToSerialize); //This gives you the byte array. mStream.ToArray(); 

然后,如果要将字节数组转换回对象:

 var mStream = new MemoryStream(); var binFormatter = new BinaryFormatter(); // Where 'objectBytes' is your byte array. mStream.Write (objectBytes, 0, objectBytes.Length); mStream.Position = 0; var myObject = binFormatter.Deserialize(mStream) as YourObjectType; 

将数据转换为字节流(和返回)称为serialization (和反serialization )。

您可以使用BinaryFormatter类来执行此操作。