【发布时间】:2015-05-11 12:14:25
【问题描述】:
我有一个结构,我想通过 TCP 协议发送给 TCP 客户端,所以我想将此结构数据分配或复制到字节数组:
struct StartReadXML
{
public int CmdID;//3
public char[] CmdName;//ReadXML
public char[] Description;//Other data
};
这里将数据分配给结构数据成员,如下所示:
StartReadXML startXML=new StartReadXML();
startXML.CmdID = 3;
startXML.CmdName = "sreedhar".ToCharArray();
startXML.Description = "Kumar".ToCharArray();
现在,我希望将它分配给一个字节数组。使用编组的方法如下:
int sizestartXML = Marshal.SizeOf(startXML);//Get size of struct data
byte[] startXML_buf = new byte[sizestartXML];//byte array & its size
IntPtr ptr = Marshal.AllocHGlobal(sizestartXML);//pointer to byte array
Marshal.StructureToPtr(startXML, ptr, true);
Marshal.Copy(ptr, startXML_buf, 0, sizestartXML);
Marshal.FreeHGlobal(ptr);
//Sending struct data packet
stm.Write(startXML_buf, 0, startXML_buf.Length);//Modified
但是,它在 Structuretoptr 转换方法中失败。请帮助将结构数据传输为正在使用上述步骤的字节。 在此先感谢微笑| :) !!
【问题讨论】:
-
您是否考虑过使用
BinaryFormatter序列化您的对象? msdn.microsoft.com/en-us/library/…
标签: c# arrays struct char copy