In der C#wird die Struktur in Byte -Array umgewandelt
In C#ist die Konvertierung der Struktur in Byte -Array eine gemeinsame Technik für die Übertragung von Netzwerkdaten oder die Binärdatenspeicherung. Dieser Leitfaden zeigt, wie das Marschall verwendet wird, um diesen Vorgang abzuschließen.
Der von Ihnen angegebene Code definiert eine Struktur namens CIFSpacket, die verschiedene Felder enthält, die das Netzwerkdatenpaket darstellen. Um diese Struktur in Byte -Array umzuwandeln, befolgen Sie die folgenden Schritte:
<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; } // 将字节数组转换为结构体的函数 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>
<code class="language-csharp">[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)] public string Buffer;</code>
Mit diesen Funktionen können Sie mit GetByTes () die CIFSpacket -Struktur einfach in Byte -Array umwandeln und von Bytes () aus dem Byte -Array zurückkehren. Dies bietet eine bequeme Methode, um Ihre Struktur in Binärformaten zu bedienen und zu übertragen.
Das obige ist der detaillierte Inhalt vonWie konvertieren Sie eine C# -Struktur mit Marschagen in ein Byte -Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!