Heim >Backend-Entwicklung >C++ >Wie konvertiere ich eine C#-Struktur (CIFSPacket) in ein Byte-Array für die Netzwerkübertragung?
Die Umwandlung der Struktur in das Byte -Array in der Struktur des Byte -Arrays
Netzwerkdatenübertragung muss die Struktur in Byte -Array umwandeln. Die folgenden Antworten, die beschreiben, wie eine bestimmte Struktur namens CIFSpacket in C# in Byte -Array konvertiert wird:
<:> Frage:
Wie kann man die CIFSpacket -Struktur in Byte -Array umwandeln, um die Netzwerkübertragung mithilfe eines Wortes zu übertragen?
Antwort:
Marshaling ist ein effektiver Weg, um dies zu konvertieren. implementieren:
einschließlich Header -Dateien: add
zum Beginn des Programms hinzufügen.
using System.Runtime.InteropServices;
<code class="language-csharp"> 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>
Geben Sie für das String -Feld
<code class="language-csharp"> 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>an, um eine Zeichenfolge mit einer maximalen Größe von 100 anzuzeigen.
Beispiel Verwendung:
Funktion senden:[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine C#-Struktur (CIFSPacket) in ein Byte-Array für die Netzwerkübertragung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!