使用编组,这相当容易。
文件顶部
using System.Runtime.InteropServices
功能
byte[] getBytes(CIFSPacket str) { int size = Marshal.SizeOf(str); byte[] arr = new byte[size]; IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(str, ptr, true); Marshal.Copy(ptr, arr, 0, size); Marshal.FreeHGlobal(ptr); return arr;}并将其转换回:
CIFSPacket fromBytes(byte[] arr) { CIFSPacket str = new CIFSPacket(); int size = Marshal.SizeOf(str); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.Copy(arr, 0, ptr, size); str = (CIFSPacket)Marshal.PtrToStructure(ptr, str.GetType()); Marshal.FreeHGlobal(ptr); return str;}在您的结构中,您需要将其放在字符串之前
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]public string Buffer;
并确保SizeConst与最大的字符串一样大。
您可能应该阅读以下内容:http :
//msdn.microsoft.com/zh-
cn/library/4ca6d5z7.aspx



