C# Struktur in ein Array ablegen

Gast #959329
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.