Unity封装MemoryStream进行内存读写
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进行内存读写相关推荐
- 驱动开发: 封装内核级驱动读写
内核级别的内存读写可用于绕过各类驱动保护,从而达到强制读写对端内存的目的,本人闲暇之余封装了一个驱动级的内核读写接口,使用此接口可实现对远程字节,字节集,整数,浮点数,多级偏移读写等. 项目地址:Gi ...
- 【Unity】开发WebGL内存概念具体解释和遇到的问题
自增加unity WebGL平台以来.Unity的开发团队就一直致力于优化WebGL的内存消耗. 我们已经在Unity使用手冊上有对于WebGL内存管理的详尽分析,甚至在Unite Europe 20 ...
- 使用WinIO库实现保护模式下的IO和内存读写
问题已解决: 原因是函数的调用方式与WinIO中不一致,使用的时候漏掉了__stdcall. 函数原定义为: 在实际的GPIO读写中遇到以下问题: SetPortVal可正常写入,但是GetPortV ...
- ps读写ddr3里面的数据 zynq_Zynq:用PS控制DDR3内存读写
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...
- C#操作内存读写方法是什么呢?让我们来看看具体的实例实现:
C#操作内存读写方法是什么呢?让我们来看看具体的实例实现: using System.Runtime.InteropServices; using System.Text; public class ...
- Android开发笔记(二十八)利用Application实现内存读写
全局变量 C/C++有所谓的全局变量,因为全局变量保存在内存中,所以操作全局变量就是操作内存,其速度远比操作数据库或者操作文件快得多,而且工程里的任何代码都可以引用全局变量,因此很多时候全局变量是共享 ...
- 内存读写函数实现进程间通信
内存读写函数实现进程间通信 上一篇博文讲了使用Windows自定义消息实现进程间的通信,而今天这篇博文讲重点讲解使用内存读写函数实现进程间的通信. 使用内存读写函数实 ...
- 最简单的基于FFmpeg的内存读写的例子:内存转码器
===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...
- 最简单的基于FFmpeg的内存读写的例子:内存播放器
===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...
最新文章
- uniapp中自定义返回和物理返回
- java 常见中文乱码问题解决
- 2种IO并发开发中的设计模式:Reactor and Proactor
- 使用meta来刷新网页效果
- SQLserver查询练习
- TypeScript:函数进阶
- C# list使用方法
- VMware Harbor现已加入Rancher社区Catalog
- cad打开卡死_CAD一打开就卡死,重装也不管用怎么办?
- 直通输出设备 android kodi,PVE直通核显搭建LibreELEC KODI HTPC实现HDMI输出
- 第三章 一元函数积分概念、计算及应用
- 仿京东商城主页(静态代码)
- 怎样做项目计划(转载)
- 考研经验计算机信息技术,考研经验:失败者的4条血泪教训
- vtkPolyData获取bounds点坐标
- C++程序设计(实践)_老师有话说 S1| 如何学好计算机程序设计(c语言)
- Leetcode 300-最长递增子序列
- 2017,不能再咸鱼了
- 编程题-有n步台阶一次只能上1步或2步共有多少种走法
- 【蓝桥杯】——键盘是使用