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
Freigeben: 2025-01-24 14:47:10
Original
932 Leute haben es durchsucht

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>
    Nach dem Login kopieren
  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>
    Nach dem Login kopieren
    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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage