如何将C#Struct转换为字节数组 [英] How to convert C# Struct to Byte Array
问题描述
我有结构:
Hi, I have structure :
struct StartReadXML
{
public int CmdID;//3
public char[] CmdName;//ReadXML
public char[] Description;
};
初始化如下:
StartReadXML startXML = new StartReadXML();
startXML.CmdID = 3;
var charCmdName =s.ToCharArray();
startXML.CmdName =s.ToCharArray();
startXML.Description =p.ToCharArray();
现在,我想将它分配给一个字节数组。使用编组如下所示:
With initializations as below :
StartReadXML startXML=new StartReadXML();
startXML.CmdID = 3;
var charCmdName = "s".ToCharArray();
startXML.CmdName = "s".ToCharArray();
startXML.Description = "p".ToCharArray();
Now, I want it to be assigned to a byte array. Which am doing using marshalling as below:
int sizestartXML = Marshal.SizeOf(startXML);//Get size of struct data
byte[] startXML_buf = new byte[sizestartXML];//declare byte array and initialize 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转换方法失败了。请帮助将结构数据转换为使用上述步骤的字节。
提前谢谢:) !!
But, it fails at Structuretoptr conversion method. Please help in transferring the struct data as bytes for which am using above steps.
Thanks in advance :) !!
推荐答案
看看这个。
如何在C#中将结构转换为字节数组? [ ^ ]
感谢您的帮助:)! />
这个对我有用
Thanks for your help :)!
This one worked for me
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
如下:
as below:
struct StartReadXML
{
public int CmdID;//3
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public string CmdName;//ReadXML
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public string Description;//Data to be sent
};
和
and
StartReadXML startXML=new StartReadXML();
startXML.CmdID = 3;
//var charCmdName = "s".ToCharArray();
startXML.CmdName = "Sree";
startXML.Description = "test";
这篇关于如何将C#Struct转换为字节数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!