[英]convert dictionary or list to byte[]
好的,我在这里和统一论坛上都看到了许多类似的问题,询问有关从一种格式转换为另一种格式的问题。 我有一个(希望如此)简单的问题,但我找不到答案。 我正在使用 Prime31 的游戏中心插件来处理回合制多人游戏。 在 Prime31 的插件中,他们要求您提供一个 byte[] 以发送给其他玩家。 (状态数据)所以问题是,将 List 转换为字节数组然后将它们从字节数组转换回来的好方法是什么?
作为参考,这是我需要的复杂类,稍后我可能需要添加更多成员,但不是任何不同的类型。 如果这样可以更轻松地将 PokerPlayers 列表转换为 byte[],那么 int 的列表(手中的牌)很容易成为 4 个单独的 int。 同样在此列表中不是固定长度,而是始终为 4-8。
public class PokerPlayer{
public string playerID;
public string alias;
public int wildCard;
public List<int> cardsInHand;
public int chips;
}
我觉得当我看到答案时,我会因为没有早点看到答案而自责。 任何指向相关材料的指针/链接都会很好,我已经用类似(非常相似)但不完全相同的问题在谷歌上搜索了 3 个小时。
您可能想尝试序列化。
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;
BinaryFormatter
现在存在安全风险。 如果我找到一个不使用它的好方法,我会回来的
编辑:这仍然是 Google 中的最高结果,所以我将展示我为摆脱BinaryFormatter
所做的工作
你需要 Newtonsoft.Json
public static class ExtendedSerializerExtensions
{
private static readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
};
public static byte[] Serialize<T>(this T source)
{
var asString = JsonConvert.SerializeObject(source, SerializerSettings);
return Encoding.Unicode.GetBytes(asString);
}
public static T Deserialize<T>(this byte[] source)
{
var asString = Encoding.Unicode.GetString(source);
return JsonConvert.DeserializeObject<T>(asString);
}
}
如果您需要一个流而不是一个字节数组,那么离这里不远了
将数据转换为字节流(并返回)称为serialization
(和反serialization
)。
您可以使用BinaryFormatter类来执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.