Heim >Backend-Entwicklung >C++ >Wie konvertiere ich eine C#-Struktur (CIFSPacket) in ein Byte-Array für die Netzwerkübertragung?

Wie konvertiere ich eine C#-Struktur (CIFSPacket) in ein Byte-Array für die Netzwerkübertragung?

Barbara Streisand
Barbara StreisandOriginal
2025-01-24 14:47:10934Durchsuche

How to Convert a C# Structure (CIFSPacket) to a Byte Array for Network Transmission?

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.
  1. GetBytes -Funktion: Definieren Sie eine Funktion zum Umwandeln der CIFSpacket -Struktur in Byte -Array: using System.Runtime.InteropServices;

  2. FromBytes -Funktion: Definieren Sie eine Funktion zum Umwandeln des Byte -Arrays in die CIFSpacket -Struktur:

    <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>
  3. Andere Vorsichtsmaßnahmen:

    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)]
  • Empfangsfunktion:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn