当前位置: 首页 > news >正文

C#实现结构体与字节流的相互转化

unity项目中,涉及到与C++的相互通信,而通信接口为C++封好的动态库。所以,传输信息时,需要向C++端发送字节流信息。
对此,需将结构体数据转为字节流,其代码如下:

public static byte[] StructToBytes(System.Object obj)
{if(obj != null){int size = Marshal.SizeOf(obj);byte[] bytes = new byte[size];try{IntPtr ptr = Marshal.AllocCoTaskMem(size);Marshal.StructureToPtr(obj,ptr,size);Marshal.Copy(ptr,bytes,0,size);Marshal.FreeHGlobal(ptr);}catch(Exception ex){}return bytes;}return null;
}

对于接受到的字节流数据,需要将其转为对应的结构体方便使用,代码如下:

public static System.Object BytesToStruct(byte[] bytes, Type structType)
{int size =  Marshal.SizeOf(structType);IntPtr buffer = Marshal.AllocHGlobal(size);try{Marshal.Copy(bytes,0,buffer,size);return Marshal.PtrToStructure(buffer,structType);}finally{Marshal.FreeHGlobal(buffer);}
}
http://www.lryc.cn/news/106591.html

相关文章:

  • 用LangChain开源框架实现知识机器人
  • HCIP——前期综合实验
  • 【2023年电赛】运动目标控制与自动追踪系统(E 题)最简单实现
  • 【IMX6ULL驱动开发学习】22.IMX6ULL开发板读取ADC(以MQ-135为例)
  • 宝塔安装ModStart,快速开启高效开发之旅!
  • 第六章 HL7 架构和可用工具 - 定义新的消息类型和结构类型
  • 通向架构师的道路之Tomcat性能调优
  • vue03 es6中对数组的操作,vue对数据监控的原理(分别对对象和数组的监控)
  • 微信小程序 - 解析富文本插件版们
  • 工厂方法模式(Factory Method)
  • js如何将图片转成BASE64编码,网页跟uniapp开发的app的区别?
  • 1400*C. Computer Game
  • windows10访问Ubuntu 18.04共享目录(已验证)
  • Linux安装redis执行make命令报错:gcc not found和*** [adlist.o] Error 1
  • R语言glmnet包详解:横截面数据建模
  • LeetCode257. 二叉树的所有路径
  • ajax、axios、fetch的区别
  • Liunx开发工具
  • Docker入门之运行Nginx案例
  • 【深度学习环境】安装anaconda、tensorflow、pycharm
  • mockery 模拟
  • 汽车后视镜反射率检测系统
  • uni-app引用外部图标库(阿里矢量图)
  • day49-Todo List(待办事项列表)
  • 寻找丢失数字:数学与位运算的解密之旅
  • 数论分块学习笔记
  • 【基础理论】了解点过程
  • 深入理解Spring MVC中的@ResponseBody注解
  • 大数据学习教程:Linux高级教程(下)
  • 1.Oracle建表及使用