Bit-Felder in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
stwe85
User
Beiträge: 7
Registriert: Freitag 5. Juni 2009, 07:57

Hi, ich habe ein Feld in dem ich einen numerischen Wert speichere (BIT Feld)

Dazu gibt es virtuelle Chekboxen (ohne gespeicherte Werte) die den Wert des Bit Feldes berechnen bzw. ergeben.
Die Eingabe in das BIT Feld ist nicht mein Problem, sondern die Ausgabe beim lesen.

Bsp.:
BIT-Feld Werte:
1 ckbx_1
2 ckbx_2
4 ckbx_3
16 ckbx_4

Aktueller Bitfeld Wert: 21 --- somit müssten ckbx_1, ckbx_3 und ckbx_4 aktiv sein

Die Chekboxen sollen prüfen ob "ihr Wert" im Bitfeld drinsteht ... könnt ihr mir da weiterhelfen?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

stwe85 hat geschrieben: BIT-Feld Werte:
1 ckbx_1
2 ckbx_2
4 ckbx_3
16 ckbx_4

Aktueller Bitfeld Wert: 21 --- somit müssten ckbx_1, ckbx_3 und ckbx_4 aktiv sein
Irgendwie fehlt da noch die 8.

Aber ansonsten:

Code: Alles auswählen

>>> 21 & 16
16
>>> 21 & 2
0
Edit: hier versagt der Code-Parser anscheinend beim Kaufmanns-Und.
BlackJack

Wenn man das Code-Highlight weglässt, kann man das ``&`` als solches lesen:

Code: Alles auswählen

In [74]: [21 & i for i in [1, 2, 4, 16]]
Out[74]: [1, 0, 4, 16]

In [75]: [21 & i != 0 for i in [1, 2, 4, 16]]
Out[75]: [True, False, True, True]
stwe85
User
Beiträge: 7
Registriert: Freitag 5. Juni 2009, 07:57

die 8 ... richtig :)

und Vielen Dank für die Hilfe funktioniert einwandfrei :)
Antworten