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
Ich würde es mit einem BinaryReader
machen. Dies würde in diese Richtung gehen:
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.
Tags und Links c# struct marshalling unmarshalling