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.
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;
[Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)
Versuchs mal mit Konvertierung
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