转自[DotNet笔记]

相当于序列化与反序列化,但是不用借助外部文件
1、struct转换为byte[]

 1static   byte[]   StructToBytes(object   structObj)   
 2  {   
 3  int   size   =     Marshal.SizeOf(structObj);   
 4  IntPtr   buffer   =   Marshal.AllocHGlobal(size);   
 5  try   
 6  {   
 7  Marshal.StructureToPtr(structObj,   buffer,   false);   
 8  byte[]   bytes   =   new   byte[size];   
 9  Marshal.Copy(buffer,   bytes,   0,   size);   
10  return   bytes;   
11  }   
12  finally   
13  {   
14  Marshal.FreeHGlobal(buffer);   
15  }   
16    
17  } 

 2、byte[]转换为struct

 1static   object   BytesToStruct(byte[]   bytes,   Type   strcutType)   
 2  {   
 3  int   size   =     Marshal.SizeOf(strcutType);   
 4  IntPtr   buffer   =   Marshal.AllocHGlobal(size);   
 5  try   
 6  {   
 7  Marshal.Copy(bytes,   0,   buffer,   size);   
 8  return   Marshal.PtrToStructure(buffer,   strcutType);   
 9  }   
10  finally   
11  {   
12  Marshal.FreeHGlobal(buffer);   
13  }   
14  } 
15

转载于:https://www.cnblogs.com/tallman/archive/2007/04/23/724032.html

struct和byte[]相互转换(用Marshal类实现)相关推荐

  1. C#-利用Marshal类实现序列化

    主要是使用Marshal类里的两个方法: 第一个是StructureToPtr,将数据从托管对象封送到非托管内存块. 第二个是PtrToStructure,将数据从非托管内存块封送到新分配的指定类型的 ...

  2. Marshal类的简单使用

    2019独角兽企业重金招聘Python工程师标准>>> 终于从北京回上海了,第一次听unity开发者大会,感觉讲的都是一些Unity 5新功能的介绍,其实主要还是要靠自己去摸索那些新 ...

  3. 关于Marshal 类的整理

    原文转载于:https://www.cnblogs.com/DragonX/p/3474251.html 在两个不同的实体(两个线程或者进程甚至机器.在Managed和Unmanaged之间)进行方法 ...

  4. java marshal 序列化_求教Marshal类实现序列化出现的问题

    小弟最近在研究利用Marshal实现序列化和反系列化,主要是使用Marshal类里的两个方法,StructureToPtr和PtrToStructure,这两个类的具体讲解和用法我就不多赘述 了,具体 ...

  5. 如何将struct System.Byte byte []转换为C#中的System.IO.Stream对象?

    如何将struct System.Byte byte[]转换为C#中的System.IO.Stream对象? #1楼 查看MemoryStream类. #2楼 您正在寻找MemoryStream.Wr ...

  6. C# Marshal类基本概念和入门示例程序

    marshal:直译为"编排", 在计算机中特 指将数据按某种描述格式编排出来,通常来说一般是从非文本格式到文本格式的数据转化. unmarshal是指marshal的逆过程.比如 ...

  7. Marshal类的使用

    M a r s h a l 类 的 使 用 Marshal类的使用 Marshal类的使用 https://docs.microsoft.com/zh-cn/dotnet/api/system.run ...

  8. 图片与Byte相互转换,文件和字节流的转换方法

    /// <summary>         /// 文件转化成byte[]数组         /// </summary>         /// <param nam ...

  9. C#中Marshal 类的内存操作的一般功能概述

    Marshal 类的内存操作的一般功能 Marshal类 提供了一个方法集,这些方法用于分配非托管内存.复制非托管内存块.将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法 ...

最新文章

  1. VM之Linux:Linux的Ubuntu中,解决安装后屏幕太小的问题
  2. 【整理】SAP 看板简介
  3. python对大量数据去重_Python对多属性的重复数据去重实例
  4. 【Qt】Qt Creator中布局器详解
  5. 高中生计算机创新大赛作品,2017 第十届“英特尔杯”全国大学生软件创新大赛获奖作品...
  6. android标题显示栏菜单在标题之下,Android菜单项标题不显示
  7. python format函数保留两位小数_python format函数
  8. 域名与网页服务器的什么对应,简述网站从域名到网页的访问流程
  9. 华为给力!算力最强AI处理器在中国!
  10. 做底层 AI 框架和做上层 AI 应用,哪个对自己的学术水平(或综合能力)促进更大?...
  11. 如何将网易云音乐/QQ音乐转移到Apple Music
  12. MDK5 安装指导书
  13. 配置单交换机VLAN划分
  14. 2018服务商口碑榜Top50(3月)重磅出炉
  15. 微信公众号H5之微信分享常见错误和问题(the permission value is offline verifying)
  16. 全国计算机四级薪资,全国计算机四级通过率有多少
  17. 使用ffmpeg将m3u8文件转为mp4
  18. S32DS封装静态库相关问题
  19. 性能测试指南 | 一些实用的排查命令(未完待续)
  20. 微信小程序上实现 table 表格

热门文章

  1. C语言数据类型转换(自动类型转换 强制类型转换)
  2. Java的文件流定义,java文件流的问题!急
  3. oracle dbwr trace文件,ORA-01157: cannot identify/lock data file 19 - see DBWR trace file问题处理...
  4. python为什么装不了pip_python自带pip用不了怎么办
  5. 方程组的直接解法和迭代法 python_数据与算法总结——基本数值算法2(线性方程组)...
  6. abb智能控制系统_ABB助力国网冀北电力打造虚拟电厂
  7. pat 乙级 1019 数字黑洞(C++)
  8. 【渝粤题库】陕西师范大学152102 管理学原理作业(高起专)
  9. 【渝粤题库】国家开放大学2021春2320物流管理定量分析方法题目
  10. python脚本设置环境变量_详解如何设置Python环境变量?