C Bitfelder in C #

9

Ich muss eine C-Struktur in C # übersetzen, die Bitfelder verwendet.

%Vor%

Weiß jemand, wie man das macht?

    
David 25.02.2011, 10:12
quelle

4 Antworten

4

Wie in diese Antwort erläutert und In diesem MSDN-Artikel suchen Sie möglicherweise anstelle von BitField

nach dem Folgenden %Vor%

das kann ein bisschen nervig sein, um zu 2 32 zu rechnen, du kannst das auch tun:

%Vor%

Und Sie können auf Ihre Flags zugreifen, wie Sie es in C erwarten würden:

%Vor%

und C # in .NET 4 wirft einen Bone mit der Methode HasFlag() .

%Vor%     
GlenH7 15.05.2013 18:36
quelle
3

Sie könnten die Klasse BitArray für das Framework verwenden. Sehen Sie sich den Artikel msdn an.

    
Nekresh 25.02.2011 10:17
quelle
-1

Leider gibt es so etwas in C # nicht. Die nächste Sache ist die Anwendung eines StructLayout-Attributs und die Verwendung des FieldOffset-Attributs für Felder. Der Feld-Offset liegt jedoch in Bytes , nicht in Bits. Hier ist ein Beispiel:

%Vor%

Aber es ist nicht das gleiche wie die Funktionalität, die Sie wollen.

Wenn Sie eine Bitsequenz zu einer Struktur dekodieren müssen, müssen Sie manuellen Code schreiben (zum Beispiel mit Klassen wie MemoryStream oder BitConverter).

    
Alex 25.02.2011 10:20
quelle
-2

Suchen Sie nach dem Attribut FieldOffset ? Siehe hier: FieldOffsetAttribute-Klasse

    
Simon Mourier 25.02.2011 10:19
quelle