So ordnen Sie Strukturen mit Zeichenfolgefeldern unbekannter Länge in C # zu

8

Ich bekomme ein Array von Bytes, ich muss es zu C # struct entpacken. Ich kenne den Typ der Struktur, es hat einige Zeichenfolgenfelder. Die Strings im Byte-Array erscheinen als solche: zwei erste Bytes sind die Länge des Strings, dann der String selbst. Ich kenne die Länge der Saiten nicht. Ich weiß, dass sein Unicode!

%Vor%

sieht das Byte-Array so aus: 00,00,01,00, 00,00,08,00, 4F, 00,46,00,49,00,52,00, 00,00,08,00, 4F, 00,46,00,49,00,52,00,

Ich habe auch diesen Link mit dem gleichen ungelösten Problem gefunden: binäre Daten in eine Struktur laden

Danke euch allen, Ofir

    
Ofir 30.01.2011, 15:06
quelle

2 Antworten

3

Ich würde es mit einem BinaryReader machen. Dies würde in diese Richtung gehen:

%Vor%

Bitte beachten Sie, dass dies nicht direkt für das von Ihnen bereitgestellte Byte-Array-Beispiel funktioniert. Die Zeichenanzahl und das ID-Feld sind nicht in der Standard-Little-Endian- oder -Bigendian-Reihenfolge. Es könnte sein, dass die Felder 16 Bit sind und dass sie mit 16 Bit Füllfeldern vorangestellt sind. Wer hat diesen Bytestrom generiert?

Aber das genaue Format ist für diese Strategie nicht besonders wichtig, da Sie einfach ReadInt32 in ReadInt16 ändern, sie neu anordnen können, um es zum Laufen zu bringen.

Ich mag die Serializer-Attribute nicht. Denn es koppelt Ihre internen Datenstrukturen an den Austausch. Dies ist der Fall, wenn Sie mehrere Versionen des Datenformats unterstützen müssen.

    
user180326 04.02.2011 21:09
quelle
0

Dies ist (noch) keine Antwort, sondern eine Frage / ein Kommentar mit einer beträchtlichen Menge Code für Feedback. Wie interpretierst du dein Byte-Array? Brechen Sie es auf.

%Vor%     
Amy 01.02.2011 21:58
quelle