Unity封装MemoryStream进行内存读写

MMO_MemoryStream类


using System;
using System.IO;
using System.Text;public class MMO_MemoryStream : MemoryStream
{public MMO_MemoryStream(){}public MMO_MemoryStream(byte[] buffer) :base(buffer){}#region Shortpublic short ReadShort(){byte[] arr = new byte[2];base.Read(arr, 0, arr.Length);return BitConverter.ToInt16(arr, 0);}public void WriteShort(short value){byte[] arr = BitConverter.GetBytes(value);base.Write(arr,0,arr.Length);}#endregion#region UShortpublic ushort ReadUShort(){byte[] arr = new byte[2];base.Read(arr, 0, arr.Length);return BitConverter.ToUInt16(arr, 0);}public void WriteUShort(ushort value){byte[] arr = BitConverter.GetBytes(value);base.Write(arr, 0, arr.Length);}#endregion#region Intpublic int ReadInt(){byte[] arr = new byte[4];base.Read(arr, 0, arr.Length);return BitConverter.ToInt32(arr, 0);}public void WriteInt(int value){byte[] arr = BitConverter.GetBytes(value);base.Write(arr, 0, arr.Length);}#endregion#region UIntpublic uint ReadUInt(){byte[] arr = new byte[4];base.Read(arr, 0, arr.Length);return BitConverter.ToUInt32(arr, 0);}public void WriteUInt(uint value){byte[] arr = BitConverter.GetBytes(value);base.Write(arr, 0, arr.Length);}#endregion#region Floatpublic float ReadFloat(){byte[] arr = new byte[4];base.Read(arr, 0, arr.Length);return BitConverter.ToSingle(arr, 0);}public void WriteFloat(float value){byte[] arr = BitConverter.GetBytes(value);base.Write(arr, 0, arr.Length);}#endregion#region Doublepublic double ReadDouble(){byte[] arr = new byte[8];base.Read(arr, 0, arr.Length);return BitConverter.ToDouble(arr, 0);}public void WriteDouble(double value){byte[] arr = BitConverter.GetBytes(value);base.Write(arr, 0, arr.Length);}#endregion#region Boolpublic bool ReadBool(){return base.ReadByte() == 1;}public void WriteBool(bool value){base.WriteByte((byte)(value == true ? 1 : 0));}#endregion#region Stringpublic string ReadString(){ushort len = this.ReadUShort();byte[] arr = new byte[len];base.Read(arr, 0, len);return Encoding.UTF8.GetString(arr, 0, len);}public void WriteString(string value){byte[] arr = Encoding.UTF8.GetBytes(value);if (arr.Length> 65535){throw new Exception("长度超出范围");}this.WriteUShort((ushort)value.Length);base.Write(arr, 0, arr.Length);}#endregion
}

Test测试


using UnityEngine;public class Test : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Item item = new Item();item.age = 18;item.name = "zzs";item.score = 100;byte[] arr = null;using (MMO_MemoryStream ms = new MMO_MemoryStream()){ms.WriteInt(item.age);ms.WriteString(item.name);ms.WriteInt(item.score);arr = ms.ToArray();}for (int i = 0; i < arr.Length; i++){Debug.Log(string.Format("{0}:{1}", "arr" + i, arr[i]));}Item item2 = new Item();using (MMO_MemoryStream ms = new MMO_MemoryStream(arr)){item2.age = ms.ReadInt();item2.name = ms.ReadString();item2.score = ms.ReadInt();}Debug.Log(item2.age);Debug.Log(item2.name);Debug.Log(item2.score);}
}
public class Item
{public int age;public string name;public int score;
}

Unity封装MemoryStream进行内存读写相关推荐

  1. 驱动开发: 封装内核级驱动读写

    内核级别的内存读写可用于绕过各类驱动保护,从而达到强制读写对端内存的目的,本人闲暇之余封装了一个驱动级的内核读写接口,使用此接口可实现对远程字节,字节集,整数,浮点数,多级偏移读写等. 项目地址:Gi ...

  2. 【Unity】开发WebGL内存概念具体解释和遇到的问题

    自增加unity WebGL平台以来.Unity的开发团队就一直致力于优化WebGL的内存消耗. 我们已经在Unity使用手冊上有对于WebGL内存管理的详尽分析,甚至在Unite Europe 20 ...

  3. 使用WinIO库实现保护模式下的IO和内存读写

    问题已解决: 原因是函数的调用方式与WinIO中不一致,使用的时候漏掉了__stdcall. 函数原定义为: 在实际的GPIO读写中遇到以下问题: SetPortVal可正常写入,但是GetPortV ...

  4. ps读写ddr3里面的数据 zynq_Zynq:用PS控制DDR3内存读写

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  5. C#操作内存读写方法是什么呢?让我们来看看具体的实例实现:

    C#操作内存读写方法是什么呢?让我们来看看具体的实例实现: using System.Runtime.InteropServices; using System.Text; public class ...

  6. Android开发笔记(二十八)利用Application实现内存读写

    全局变量 C/C++有所谓的全局变量,因为全局变量保存在内存中,所以操作全局变量就是操作内存,其速度远比操作数据库或者操作文件快得多,而且工程里的任何代码都可以引用全局变量,因此很多时候全局变量是共享 ...

  7. 内存读写函数实现进程间通信

    内存读写函数实现进程间通信         上一篇博文讲了使用Windows自定义消息实现进程间的通信,而今天这篇博文讲重点讲解使用内存读写函数实现进程间的通信.          使用内存读写函数实 ...

  8. 最简单的基于FFmpeg的内存读写的例子:内存转码器

    ===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...

  9. 最简单的基于FFmpeg的内存读写的例子:内存播放器

    ===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...

最新文章

  1. uniapp中自定义返回和物理返回
  2. java 常见中文乱码问题解决
  3. 2种IO并发开发中的设计模式:Reactor and Proactor
  4. 使用meta来刷新网页效果
  5. SQLserver查询练习
  6. TypeScript:函数进阶
  7. C# list使用方法
  8. VMware Harbor现已加入Rancher社区Catalog
  9. cad打开卡死_CAD一打开就卡死,重装也不管用怎么办?
  10. 直通输出设备 android kodi,PVE直通核显搭建LibreELEC KODI HTPC实现HDMI输出
  11. 第三章 一元函数积分概念、计算及应用
  12. 仿京东商城主页(静态代码)
  13. 怎样做项目计划(转载)
  14. 考研经验计算机信息技术,考研经验:失败者的4条血泪教训
  15. vtkPolyData获取bounds点坐标
  16. C++程序设计(实践)_老师有话说 S1| 如何学好计算机程序设计(c语言)
  17. Leetcode 300-最长递增子序列
  18. 2017,不能再咸鱼了
  19. 编程题-有n步台阶一次只能上1步或2步共有多少种走法
  20. 【蓝桥杯】——键盘是使用

热门文章

  1. JAVA集合面试题52道
  2. 第十章Tensorflow图像处理
  3. JDK1.8新特性:lambda表达式
  4. EPLAN P8部件库 EPLAN P8部件库,包含低压电气 控制系统设计常用品牌型号,全部部件均为本人整理自己创建,可大大提高电气控制行业同仁的工作效率!
  5. 问道虚拟服务器,省时省力,让我们直接登陆服务器!
  6. TI公司之DSP结构与芯片
  7. 服务器显示器蓝屏怎么解决
  8. Chatbot-1-笔记
  9. R语言-频数统计函数
  10. java技术计算机机房管理系统文档,计算机机房管理系统课程设计报告