首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教一个socket通信中,byte[]转换为struct的有关问题

2012-05-27 
请问一个socket通信中,byte[]转换为struct的问题?如果我c++发送一个struct类型的byte数组C/C++ codestruct

请问一个socket通信中,byte[]转换为struct的问题?
如果我c++发送一个struct类型的byte数组

C/C++ code
struct login{   char login;   char user[20];   char password[20];}

请问c#的收到这个byte数组怎么转换为struct类型?
c#结构体中数组不是不可以是固定长度吗?
这个怎么转换呀?

[解决办法]
/// <summary>
/// byte数组转结构体
/// </summary>
/// <param name="bytes">byte数组</param>
/// <returns>转换后的结构体</returns>
public object ConvertToStruct(byte[] bytes)
{
int size = 0;
//得到结构体的大小
size = Marshal.SizeOf(typeof(结构体类型));
//分配结构体大小的内存空间
IntPtr structPtr = Marshal.AllocHGlobal(size);
//将byte数组拷到分配好的内存空间
Marshal.Copy(bytes, 0, structPtr, size);
//将内存空间转换为目标结构体
object obj = Marshal.PtrToStructure(structPtr, typeof(结构体类型));
//释放内存空间
Marshal.FreeHGlobal(structPtr);
//返回结构体
return obj;
}

需要注意你定义的结构体的字节对齐类型应该和c++那边字节对齐类型一样

热点排行