久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Protobuf的序列化與反序列化

 江江385 2018-07-13

using UnityEngine;
using System;
using ProtoBuf;
using System.IO;
using System.Collections;

//添加特性,,表示可以被ProtoBuf工具序列化
[ProtoContract]
public class NetModel
{
    //添加特性,表示該字段可以被序列化,,1可以理解為下標
    [ProtoMember(1)]
    public int ID;
    [ProtoMember(2)]
    public string Commit;
    [ProtoMember(3)]
    public string Message;
}


public class ProtocolBuffer //: MonoBehaviour
{

    // Use this for initialization
    public void Start()
    {
        Test();
    }

    void Test()
    {
        //創(chuàng)建對象
        NetModel item = new NetModel() { ID = 1, Commit = "LanOu", Message = "Unity" };
        //序列化對象
        byte[] temp = Serialize(item);
        //ProtoBuf的優(yōu)勢一:小
  
        //反序列化為對象
        NetModel result = DeSerialize(temp);
 
    }

    // 將消息序列化為二進制的方法
    // < param name="model">要序列化的對象< /param>
    private byte[] Serialize(NetModel model)
    {
        try
        {
            //涉及格式轉(zhuǎn)換,,需要用到流,將二進制序列化到流中
            using (MemoryStream ms = new MemoryStream())
            {
                //使用ProtoBuf工具的序列化方法
                ProtoBuf.Serializer.Serialize<NetModel>(ms, model);
                //定義二級制數(shù)組,,保存序列化后的結(jié)果
                byte[] result = new byte[ms.Length];
                //將流的位置設(shè)為0,,起始點
                ms.Position = 0;
                //將流中的內(nèi)容讀取到二進制數(shù)組中
                ms.Read(result, 0, result.Length);
                return result;
            }
        }
        catch (Exception ex)
        {
            return null;
        }
    }

    // 將收到的消息反序列化成對象
    // < returns>The serialize.< /returns>
    // < param name="msg">收到的消息.</param>
    private NetModel DeSerialize(byte[] msg)
    {
        try
        {
            using (MemoryStream ms = new MemoryStream())
            {
                //將消息寫入流中
                ms.Write(msg, 0, msg.Length);
                //將流的位置歸0
                ms.Position = 0;
                //使用工具反序列化對象
                NetModel result = ProtoBuf.Serializer.Deserialize<NetModel>(ms);
                return result;
            }
        }
        catch (Exception ex)
        {
            return null;
        }
    }
}


 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約