Laden...

Einzelne Bits aus Variable auslesen

Letzter Beitrag vor 9 Jahren 7 Posts 3.306 Views
Einzelne Bits aus Variable auslesen

Hallo,
ich programmiere gerade eine Oberfläche für eine Steuerung. Von der Steuerung schreibe ich mehrere Statusbits in eine uint Variable und übergebe diese Variable an die Oberfläche. Jetzt möchte ich in meinem C# Programm die Bits einzeln wieder auslesen, finde hierzu aber keinem richtigen Aufruf.
Kann mir bitte jemand sagen wie ich in C# auf einzelne Bits einer Variable zugreifen kann?

Mit einer Zahl die nur das eine Bit gesetzt hat (1, 2, 4, 8....).
Die Zahl mit & auf deine Variable verknüpft ist ungleich 0 wenn das Bit gesetzt ist. Die Zahl mit | auf die Variable verknüpft ergibt die Variable mit gesetztem Bit.

Hallo ThyMoe,

siehe [Artikel] Bitoperationen in C#

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Wenn Bitoperationen nicht unbedingt notwendig sind, wäre es dann nicht einfacher, ein Enum zu verwenden?

Am Ende ist ein Enum-Wert auch nur ein int, byte, oder was Du anderes angibst, nur dass in diesem Fall fest vorgegebene Werte einem Namen zugeordnet sind und sich damit deutlich angenehmer nutzen lassen.
Ganz nebenbei gibt es noch das FlagsAttribut

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

Hallo gfoidl,

Den Artikel habe ich schon gelesen.

Wenn ich die Variable mit dem & Operator verknüpfe bekomme ich immer die Fehlermeldung: Eine implizite Konvertierung vom Typ 'uint' in 'bool' ist nicht möglich.


                Steuerbit = Steuerwort & 1;

Hallo

Ich nehme mal an "Steuerbit" ist ein Boolean? Dann musst Du folgendes schreiben:

 
Steuerbit = ((Steuerwort & 1) == 1);
bool Bit2 = ((Steuerwort & 2) == 2);
usw.

Thomas