Définition de la structure
public struct CIFSPacket { // 字段定义... public string Buffer; }
using System.Runtime.InteropServices; public static byte[] GetBytes(CIFSPacket str) { int size = Marshal.SizeOf(str); byte[] arr = new byte[size]; IntPtr ptr = IntPtr.Zero; try { ptr = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(str, ptr, true); Marshal.Copy(ptr, arr, 0, size); } finally { Marshal.FreeHGlobal(ptr); } return arr; }
Marshaling
public static CIFSPacket FromBytes(byte[] arr) { CIFSPacket str = new CIFSPacket(); int size = Marshal.SizeOf(str); IntPtr ptr = IntPtr.Zero; try { ptr = Marshal.AllocHGlobal(size); Marshal.Copy(arr, 0, ptr, size); str = (CIFSPacket)Marshal.PtrToStructure(ptr, str.GetType()); } finally { Marshal.FreeHGlobal(ptr); } return str; }
une telle chaîne de longueur fixe dans l'exemple de structure, veuillez utiliser: [MarshalAs]
Buffer
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)] public string Buffer;
Résumé
En utilisant le maréchalage, la structure peut être facilement convertie en réseau d'octets pour la transmission des données. Cette technologie est généralement utilisée dans les applications réseau, telles que l'envoi et la réception de messages par des sockets.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!