Seite 1 von 1

Zuweisung von Bits

Verfasst: Dienstag 13. November 2018, 23:33
von maksimilian
Hallo Ihr,

ich möchte zur Simulation eines Bit-Stroms eine Bit-Liste erstellen und in ihr bestimmten Positionen den Wert 0 oder 1 zuweisen. Was nicht funktioniert ist beispielsweise folgendes:

data = [0x0] * 3 # Bitfeld der Länge 24
# Versuch, ein Bit zu setzen:
data[3] = True oder data[3] = 0b1 funktioniert nicht

Wie muss ich hier vorgehen ?

maksimilian

Re: Zuweisung von Bits

Verfasst: Dienstag 13. November 2018, 23:41
von __deets__
Entweder willst du mit Bits arbeiten, dann nimm eine Ganzzahl und den shift-Operator <<, oder du willst "simulieren", dann benutz eine Liste mit 24 bools. Dein Mischmasch ist nur unnoetig kompliziert.

Code: Alles auswählen

>>> a = 0
>>> a |= 1 << 13
>>> a
8192
oder

Code: Alles auswählen

>>> a = [False] * 24
>>> a[13] = True
>>> a
[False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False]

Re: Zuweisung von Bits

Verfasst: Mittwoch 14. November 2018, 00:02
von __blackjack__
@maksimilian: Was heisst „funktioniert nicht“? Ich sehe da ohne es auszuführen einen sehr offensichtlichen `IndexError`. Falls *der* Dich überrascht, dann verrate mal wie die Liste aussieht und welcher Wert an welchem Index zu finden ist.

Re: Zuweisung von Bits

Verfasst: Donnerstag 15. November 2018, 13:11
von maksimilian
@ deets, blackjack

Ihr seht ja aus meiner Frage, dass ich mit den Datentypen in Python noch nicht so vertraut bin und bin dankbar für Eure (nachsichtigen) Antworten. Damit der Hintergrund meiner Problematik klar wird: ich teste zur Zeit den Anschluss einer Bosche Wägezelle an einen AD-Wandler HX711. Dessen Ausgabe soll für den Test meiner Programmierung simuliert werden. In diesem Zusammenhang möchte ich erst einmal das Bithandling in Python verstehen und muss darüber weiter nachdenken, bevor ich weitere Fragen stelle.

maksimilian

Re: Zuweisung von Bits

Verfasst: Donnerstag 15. November 2018, 13:31
von __blackjack__
@maksimilian: Bit-Operationen in Python sind eigentlich die gleichen wie in C (oder Java, oder andere ähnliche Sprachen), nur das ganze Zahlen keine Begrenzung auf eine bestimmte Bitanzahl haben, sondern im Grunde in der Grösse nur durch den zur Verfügung stehenden Speicher begrenzt sind.

Re: Zuweisung von Bits

Verfasst: Donnerstag 15. November 2018, 13:57
von __deets__
maksimilian hat geschrieben: Donnerstag 15. November 2018, 13:11 Ihr seht ja aus meiner Frage, dass ich mit den Datentypen in Python noch nicht so vertraut bin und bin dankbar für Eure (nachsichtigen) Antworten. Damit der Hintergrund meiner Problematik klar wird: ich teste zur Zeit den Anschluss einer Bosche Wägezelle an einen AD-Wandler HX711. Dessen Ausgabe soll für den Test meiner Programmierung simuliert werden. In diesem Zusammenhang möchte ich erst einmal das Bithandling in Python verstehen und muss darüber weiter nachdenken, bevor ich weitere Fragen stelle.
Wenn am Ende eine "echte" Kommunikation steht, dann solltest du eben nicht mit Listen, sondern eben mit Ganzzahlen und den entsprechenden Bit-Operationen arbeiten, wie von mir gezeigt.