La conversion mutuelle de la structure et du tableau d'octets dans la structure du C #
Définition de la structure
<code class="language-csharp">public struct CIFSPacket { // 字段定义... public string Buffer; }</code>
<code class="language-csharp">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; }</code>
Marshaling
<code class="language-csharp">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; }</code>
une telle chaîne de longueur fixe dans l'exemple de structure, veuillez utiliser: [MarshalAs]
Buffer
<code class="language-csharp">[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)] public string Buffer;</code>
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!