【protobuf】 3.使用protobuf-csharp-port进行序列化和反序列化
2015-07-07 15:27
871 查看
使用protobuf-csharp-port进行序列化和反序列化,以AddressBook为例
有关如何获得AddressBook,如何构建ProtoBuf环境,请看protobuf
2.在Unity的C#中引用
一、序列化
1.构建一个AddressBook对象
3.提取方法,传入ProtoBuf对象(即AddressBook对象)及其泛型,得到byte数组
调用方法
二、反序列化
1.通过Builder的MergeFrom方法进行反序列化
有关如何获得AddressBook,如何构建ProtoBuf环境,请看protobuf
2.在Unity的C#中引用
一、序列化
1.构建一个AddressBook对象
AddressBook.Builder addressBookBuilder = AddressBook.CreateBuilder(); Person.Builder person = Person.CreateBuilder(); person.Id = 1; person.Name = "Test"; person.Email = "test@qq.com"; addressBookBuilder.AddPerson(person); AddressBook addressBook = addressBookBuilder.Build();2.调用WriteTo进行序列化
MemoryStream stream = new MemoryStream(); addressBook.WriteTo(stream); byte[] buffer = stream.ToArray();
3.提取方法,传入ProtoBuf对象(即AddressBook对象)及其泛型,得到byte数组
public static byte[] Serialize<TMessage, TBuilder>(TMessage protoBufObj) where TMessage : GeneratedMessage<TMessage, TBuilder> where TBuilder : GeneratedBuilder<TMessage, TBuilder>, new() { MemoryStream stream = new MemoryStream(); protoBufObj.WriteTo(stream); return stream.ToArray(); }
调用方法
byte[] buffer = Serialize<AddressBook, AddressBook.Builder>(addressBook);
二、反序列化
1.通过Builder的MergeFrom方法进行反序列化
AddressBook.Builder builder = new AddressBook.Builder(); builder.MergeFrom(buffer); AddressBook result = builder.Build();2.提取方法,以序列化后的byte数组为参数,获得ProtoBuf对象
public static TMessage Deserialize<TMessage, TBuilder>(byte[] buffer) where TMessage : GeneratedMessage<TMessage, TBuilder> where TBuilder : GeneratedBuilder<TMessage, TBuilder>, new() { TBuilder builder = new TBuilder(); builder.MergeFrom(buffer); return builder.Build() as TMessage; }调用方法
AddressBook result = Deserialize<AddressBook, AddressBook.Builder>(buffer);
相关文章推荐
- c#语言基础之组成结构
- C#中Timer使用及解决重入问题
- Hough线变换
- C#自适应合并文件的方法
- C#第七次作业:学习总结
- C# .ToString() 格式化
- C#第六次作业:猜猜看
- Canny 边缘检测 (Emgu.CV)
- C#学习笔记(六):可空类型、匿名方法和迭代器
- 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
- 《C#程序设计》猜猜看小游戏制作
- 《C#程序设计》第六次作业:《猜猜看》游戏的原型设计
- C#第五次作业
- C#第二次作业
- C#第一次作业
- c# 判断端口是否被占用
- C#&nbsp;Winform&nbsp;跨线程更新U…
- C#语法基础和面向对象编程
- [深入学习C#]完成异步委托的三种方式
- C#关于摄像头的使用