我现在用C#写一个UDP的程序,而UDP只能收发byte数组,而下位机要求的格式是结构体,因此我用如下代码进行转换,发的时候没有问题,收到的时候把数组转换成结构体就会报错说“访问受保护的内存”,一直解决不了。求大神帮忙啊~
private static byte[] StrutsToBytesArray(object obj)//将结构体序列化 结构体到byte[]
{
int rawsize = Marshal.SizeOf(obj);//得到结构体的大小
IntPtr buffer = Marshal.AllocHGlobal(rawsize);//分配结构体大小的内存空间
Marshal.StructureToPtr(obj, buffer, false);//将结构体拷到分配好的内存空间
byte[] rawdatas = new byte[rawsize]; //创建byte数组
Marshal.Copy(buffer, rawdatas, 0, rawsize);//从内存空间拷到byte数组
Marshal.FreeHGlobal(buffer);//释放内存空间
return rawdatas;//返回byte数组
}