Forum: PC-Programmierung C# Struktur in ein Array ablegen


von Gast (Gast)


Lesenswert?

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.

von Chris .. (dechavue)


Lesenswert?

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

von Johnny (Gast)


Lesenswert?

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.

von Arc N. (arc)


Lesenswert?

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
Noch kein Account? Hier anmelden.