专业的编程技术博客社区

网站首页 > 博客文章 正文

.NET中struct与字节流转换(将字节流转换为字符流的两个类)

baijin 2024-08-15 17:08:40 博客文章 6 ℃ 0 评论

我们都知道struct是值类型,存放在栈中。经常会遇到将对象转换后传输的需求,今天,我们就将struct转换为字节流进行数据传输。

所包含的知识点如下,struct在内存中的物理布局、托管与非托管类型的交互。

struct在内存中的物理布局

CLR控制着结构体在内存中的物理布局。当需要将结构体传递至非托管代码时,则显示控制布局尤为重要。默认情况下,C#编译器使用顺序排列方式。

托管与非托管

简单来说,托管代码就是C#、F#等编译后的IL代码,由CLR执行。非托管代码就是C/C++编译后的指令代码。

在.NET中,可以使用System.Runtime.InteropServices.Marshal类对其进行操作。具体使用方法可参考MSDN。

思路

在C/C++中,可以直接把struct存放的内存复制到一个字节数组中,得到的就是真实内容。按照这个思路。

  1. 将托管内存中的struct传递到非托管内存;
  2. 将非托管内存中的内容传递回托管内存。

详细代码如下图所示:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表