今天没干啥,就看了一个结构体和字节之间转换的方法,主要是方便网络通信,因为网络通信以字节的形式传送。Soso…………
本编主要内容如下:
1、 托管和非托管的区别?
2、 结构体和字节间转换思路?
3、 代码罗列
分割线、分割线、分割线…………………………………………………………………………
第一个问题:
托管和非托管区别?
托管代码(managed code):由公共语言运行库(相当于实时的语言翻译库)环境执行的代码,托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等
非托管代码(unmanaged code):运行于公共语言运行库环境之外的,由操作系统直接执行的代码,非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务
托管代码是由CLR运行的代码,自动提供垃圾回收、内存管理等服务;而非托管代码则是由系统直接执行的代码,手动申请内存和释放内存等。
第二个问题:
结构体和字节间转换思路?
CLR上结构体和字节之间没有直接的转换方法,需要借用非托管来申请内存,进行转换。做思路之前,需要了解Marshal类,它提供了一个方法集,这些方法用于分配非托管内存、复制托管内存块、将托管类型转换为非托管类型,此外还提供了在于非托管代码交互时使用的其他杂项方法。<