Ein bytearray ist eine Python Datenstruktur, die eine Reihe von Byte-Werten (8-Bit, 0 – 255) enthält. Die Daten können verändert werden.
Diese Datenstruktur gibt es auch in Micropython. Hier wurde sie aber nicht vollständig implementiert. Das soll nun untersucht werden.
Hier habe ich die Beschreibung für Python gefunden: https://python-reference.readthedocs.io/en/latest/docs/functions/bytearray.html und diese mit Deepl.com übersetzt:
bytearray
Beschreibung
Gibt ein neues Array aus Bytes zurück.
Syntax
bytearray ([source[, encoding[,errors]]])
source Optional. Wenn die Quelle:
- eine Zeichenkette ist, dann ist eine Kodierung erforderlich.
- eine Ganzzahl ist, das Array hat diese Größe und wird mit Null-Bytes initialisiert.
- ein Objekt ist, das der Pufferschnittstelle entspricht, ein schreibgeschützter Puffer des Objekts wird zur Initialisierung des Byte-Arrays verwendet.
- ein Iterable ist, es muss ein Iterable von Ganzzahlen im Bereich 0-256 sein, die zur Initialisierung des Arrays verwendet werden
- ohne ein Argument wird ein Array der Größe 0 erzeugt.
encoding Optional.
Erforderlich, wenn die Quelle eine Zeichenkette ist. Typische Werte: ‚ascii‘, ‚utf-8‘, ‚windows-1250‘, ‚windows-1252‘. Siehe Codecs-Modul für weitere Informationen.
errors Optional.
Mögliche Werte für errors sind:
- strict‘: löst bei einem Kodierungsfehler eine Exception aus
- replace“: ersetzt fehlerhafte Daten durch eine geeignete Ersatzmarkierung, z. B. ‚?‘ oder ‚ufffd‘.
- ignore“: Fehlgeformte Daten ignorieren und ohne weitere Benachrichtigung fortfahren
- xmlcharrefreplace‘: Ersetzen durch die entsprechende XML-Zeichenreferenz (nur bei Kodierung)
- backslashreplace‘: Ersetzen durch Backslashed-Escape-Sequenzen (nur für Encoding)
Rückgabewert
bytearray
Ersetzen durch Backslashed-Escape-Sequenzen
Die führende Escape-Sequenz \x bedeutet, dass die nächsten beiden Zeichen als Hex-Ziffern für den Zeichencode interpretiert werden, also entspricht \xaa chr(0xaa).
Bemerkungen
Der Typ Bytearray ist eine veränderbare Folge von Ganzzahlen im Bereich 0 <= x < 256. Er kann verwendet werden, um mit Low-Level-Binärdaten zu arbeiten, wie z. B. innerhalb von Bildern oder direkt aus dem Netzwerk kommend.
Was geht in Micropython?
Die ersten Quelle (String) probieren. Zuerst in Thonny, dann die Ausgabe auf dem Display:
Funktioniert.
Die zweite Möglichkeit: eine Ganzzahl:
Funktioniert.
Die dritte Möglichkeit lasse ich aus, weil ich nicht weiss was das ist.
Die vierte Möglichkeit ist z.B. eine Liste. Das interessiert mich besonders.
So geht’s nicht. Aber auch im im „echten“ Python geht es nicht.
Nun nochmal mit Zahlen:
So geht’s. Auf ein Bild des Displays verzichte ich hier. Es sieht so aus wie man es erwartet.
Die Ausgabe zeigt die Darstellung in Hex-Schreibweise (\x). Wenn Hexzahlen eingegeben werden sollen ist zu beachten, dass hunter dem b nur einfache Anführungszeichen verwendet werden dürfen (b’…‘).
Nun der Vollständigkeit wegen noch die fünfte und letzte Möglichkeit:
Auch hier verhält sich die Displayausgabe genauso wie die im Terminalfenster.
Demzufolge verhält sich bytearray in Micropython genauso wie im „echten“ Python!
Du musst eingeloggt sein um eine Antwort hinterlassen zu können.