[英]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.