MemoryStream 的一些用法

  • The following code example shows how to read and write data using memory as a backing store.
    • 基本读写数据

The following code example shows how to read and write data using memory as a backing store.

基本读写数据

using System;
using System.IO;
using System.Text;
using UnityEngine;public class Test : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){string str = "this is a test message!";UnicodeEncoding encoding = new UnicodeEncoding();byte[] first_str = encoding.GetBytes(str);using (MemoryStream m = new MemoryStream(100) ){m.Write(first_str, 0, first_str.Length);int count = (int)m.Length;Debug.Log(string.Format("Capacity = {0},Length = {1}, Position = {2}", m.Capacity, m.Length, m.Position));m.Seek(0, SeekOrigin.Begin);byte[] byteArray = new byte[count];m.Read(byteArray, 0, count);Debug.Log(count);int num = encoding.GetCharCount(byteArray, 0, count);Debug.Log(num);char[] charArray = new char[num];encoding.GetDecoder().GetChars(byteArray, 0, count, charArray, 0);string s;s = string.Join("", charArray);Debug.Log(s);for (int i = 0; i < charArray.Length; i++){Debug.Log(charArray[i]);}}}
}

这种方法只能处理文本,那么要处理其他类等数据呢,下面再看看第二种方法

using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Student
{public string name;public int id;public Gender gender;
}
[Serializable]
public enum Gender
{male,female,
}public class Test : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Student student = new Student();student.name = "zhangsan";student.id = 11;student.gender = Gender.female;using (MemoryStream m = new MemoryStream(100) ){BinaryFormatter binaryFormatter = new BinaryFormatter();binaryFormatter.Serialize(m, student);m.Position = 0;object obj = binaryFormatter.Deserialize(m);Student ss = (Student)obj;Debug.Log(ss.name);}}
}

我们使用了BinaryFormatter 这个类来序列化 数据

[参考文件]
[1]: https://docs.microsoft.com/en-us/dotnet/api/system.io.memorystream?redirectedfrom=MSDN&view=netframework-4.8

MemoryStream 的一些用法相关推荐

  1. using 的三种用法

    using 有哪三种用法? 1)引入命名空间. 2)给命名空间或者类型起别名. 3)划定作用域.自动释放资源,使用该方法的类型必须实现了 System.IDisposable接口,当对象脱离作用域之后 ...

  2. Stream、FileStream、MemoryStream的区别

    1.Stream:流,在msdn的定义:提供字节序列的一般性视图,Stream提供了读写流的方法是以字节的形式从流中读取内容.而我们经常会用到从字节流中读取文本或者写入文本,微软提供了StreamRe ...

  3. java binaryreader_Java字符流与字节流区别与用法分析

    本文实例讲述了Java字符流与字节流区别与用法.分享给大家供大家参考,具体如下: 字节流与字符流主要的区别是他们的的处理方式 流分类: 1.Java的字节流 InputStream是所有字节输入流的祖 ...

  4. 使用MemoryStream类读写内存

    MemoryStream和BufferedStream都派生自基类Stream,因此它们有很多共同的属性和方法,但是每一个类都有自己独特的用法.这两个类都是实现对内存进行数据读写的功能,而不是对持久性 ...

  5. java memorystream 包_C#使用MemoryStream类读写内存

    和FileStream一样,MemoryStream和BufferedStream都派生自基类Stream,因此它们有很多共同的属性和方法,但是每一个类都有自己独特的用法.这两个类都是实现对内存进行数 ...

  6. ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法-转

    转载于http://www.cnblogs.com/asdyzh/p/9741641.html ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法-转 ...

  7. swagger自动创建接口文档用法

    现在的开发大部分都是前后端分离的模式了,后端提供接口,前端调用接口.后端提供了接口,需要对接口进行测试,之前都是使用浏览器开发者工具,或者写单元测试,再或者直接使用Postman,但是现在这些都已经o ...

  8. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  9. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

最新文章

  1. rpm 安装 忽略依赖_CentOS 7 安装 MySQL 5.7 详细教程及常见问题
  2. matlab红字怎么删除,购买方开具红字信息表如何作账务?
  3. kademlia java_分布式哈希表原理与实现(Python版和Java版)
  4. UIAlertView的使用方法
  5. rotate array 旋转数组
  6. Exchange企业实战技巧(27)邮件中使用数字签名和邮件加密功能
  7. deepfake 图片_DeepFake克星来了!简单2步算法,造假图像无处可逃
  8. PHP访问连接MYSQL数据库
  9. 资料下载丨“十四五”数据库发展趋势与挑战-CCF数据库专委会
  10. SQL Server执行计划面试问题
  11. Redisbook学习笔记(3)数据类型之字符串
  12. 【HTML5CSS3进阶学习01】气泡组件的实现
  13. ad中按钮开关的符号_收藏:电路图符号大全
  14. nginx反向代理获取用户真实Ip地址
  15. ups计算软件_一篇文章读懂UPS
  16. 2021-03-26 大数据技术对企业管理的影响和应用前景分析
  17. python读取fits第三方库_如何读取FITS
  18. 如何在分析崩溃的边缘分析问题
  19. 缓存穿透该怎么解决? 回懵面试官
  20. 专业Java报表工具Stimulsoft Reports.Java常见问题解答

热门文章

  1. 前置机应用服务器,web服务器前置机(erp)部署步骤.pdf
  2. 3步轻松申请邮箱账号,申请163vip邮箱
  3. 写给所有默默支持我们这些IT人的另一半------携手看夕阳
  4. 内存映射方式读取文件
  5. C#调用科大讯飞在线语音合成(Windows)
  6. 爆破的思路和断点的设置
  7. vue 数据传输加密、加签、数字信封应用
  8. 从初级程序员到CEO,汤鹏与时代碰撞出的那些“火花”
  9. 计算机网络-数据链路层(广域网及相关协议(PPP协议帧格式,HDLC协议)数据链路层设备(网桥,交换机))
  10. linux 实验心得体会