Hallo, habe eine Struktur die sagen wir, 2 Byte Typen und 2 Int Typen enthält public struct test { byte a1; byte a2; int b1; int b2; } Nun möchte ich diese Struktur in ein Byte Array der länge 6 hineinschreiben. test o_test = new test(); byte array = new byte[6]; array = o_test; --> Klar, geht so nicht. Soll zeigen, was ich meine. Wie kann ich sowas in C# machen? array[0] = o_test.a1; : : So könnte ich das auch mache. Bei den ints dann mit hin und her schiften würde das auch gehen. Ist aber wohl eher nicht die elegante Art.
Am besten mit dem BinaryFormatter in einen MemoryStream Serialisieren, aus diesem Stream bekommst du dann mit ToArray das ganze als Byte - Array.
1 | [Serializeable] |
2 | struct MyStruct {...} |
3 | |
4 | //... |
5 | |
6 | using(MemoryStream stream = new MemoryStream()){ |
7 | BinaryFormatter formatter = new BinaryFormatter(); |
8 | formatter.Serialize(stream, myStructVariable); |
9 | myArr = stream.ToArray(); |
10 | } |
(Ungetestet, hier im Forum implementiert) greetz
Mit einem Union würde es wahrscheinlich auch gehen, aber das macht man eher in C / C++ so, würde daher auch zum serialisieren raten.
Je nach Anwendungsfall gibt's auch noch folgende Möglichkeiten: 1. BitConverter.GetBytes bzw. BitConverter.ToXYZ 2. Marshal.PtrToStructure bzw. Marshal.StructureToPtr
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.