MicroPython: Daten konvertieren und umwandeln

Python und MicroPython unterstützen eine Vielzahl von Datentypen. Dabei wird der Anwender mit einer dynamischen Typisierung unterstützt. MicroPython erkennt den Datentyp automatisch während der Laufzeit. Das heißt, der Datentyp einer Variable muss nicht explizit deklariert werden. Dies ermöglicht eine große Flexibilität bei der Verwendung von Variablen und Daten.

Allerdings ist in Bezug auf Zahlen MicroPython sehr streng. So mag es MicroPython zum Beispiel nicht, wenn mit Zahlen, die als Text definiert sind, gerechnet werden soll. Dann muss die Variable zuerst in einen geeigneten Datentyp umgewandelt werden.

Damit wir Daten konvertieren können müssen wir zwei Dinge wissen:

  1. Welchem Datentyp entsprechen die zu interpretierenden Daten?
  2. Was wollen wir mit den Daten machen und in welchen Datentyp sollen die Daten konvertiert werden?

Übersicht: Daten konvertieren

  • Byte in einen Text (String) konvertieren
  • Byte in eine Ganzahl (Integer) konvertieren
  • Text in eine Ganzzahl (Integer) konvertieren
  • Text in eine Gleitkommazahl (Float) konvertieren

Byte in einen Text (String) konvertieren

In MicroPython kann ein Byte in einen Text (String) mit Hilfe der Methode decode() konvertiert werden. Hier ist ein Beispiel, wie das gemacht werden kann.

In diesem Beispiel wird das Byte b'\x48\x65\x6C\x6C\x6F' in den entsprechenden Text „Hello“ umgewandelt. Standardmäßig wandelt die Methode decode() ein Byte-Objekt in den Zeichensatz UTF-8 um, weil das der gebräuchlichste Zeichensatz ist.

bytes = b'\x48\x65\x6C\x6C\x6F'
print(' Bytes:', bytes)
str = bytes.decode()
print('String:', str)

Hinweis: Es ist wichtig, den richtigen Zeichensatz zu wählen. Die Byte-Daten müssen mit den Byte-Daten im Zeichensatz interpretierbar sein. Wenn nicht, kommt nur Müll raus.

Fehlermeldung bei decode()

Die Methode „decode()“ wirft häufig Fehlermeldungen aus, weshalb der Programmcode dann abgebrochen wird.

data = b'\x80abc'
print(data.decode())

Ein „UnicodeError“ deutet daraufhin, dass die Daten keinem Unicode entsprechen und deshalb nicht umgewandelt werden können.

Weil dieser Fehler dazu führt, dass das Programm abgebrochen wird, sollte man den Fehler mit einer Ausnahmebehandlung abfangen.

data = b'\x80abc'
try:
    print('String:', data.decode())
except:
    print('Kein Unicode')

Byte in eine Ganzahl (Integer) konvertieren

In MicroPython kann ein Byte in eine Ganzahl (Integer) mit Hilfe der Methode int.from_bytes() konvertiert werden. Hier ist ein Beispiel, wie das gemacht werden kann.

data = b'\x80abc'
integer_value = int.from_bytes(data, 'big'))

Durch die Umwandlung in einen Integer kann man mit Berechnungen und Operationen weitermachen.

Text in eine Ganzzahl (Integer) konvertieren

Wenn ein Text eine Ganzzahl repräsentiert, dann kann der Text mit einer internen Funktion umgewandelt werden. Das funktioniert aber nur dann, wenn der Text tatsächlich eine Zahl ist.

text = "42"
integer_value = int(text)

Durch die Umwandlung in einen Integer kann man mit Berechnungen und Operationen weitermachen.

Text in eine Gleitkommazahl (Float) konvertieren

Gleitkommazahlen oder Fließkommazahlen (im Englischen Floating Point Number) sind Zahlen, die über Nachkommastellen verfügen und vereinfacht als Kommazahlen bezeichnet werden. Wegen der internationalen Form, wird in MicroPython ein Punkt statt dem Komma verwendet.

Wenn ein Text eine Gleitkommazahl repräsentiert und einen Punkt statt einem Komma aufweist, dann kann der Text mit einer internen Funktion umgewandelt werden. Das funktioniert aber nur dann, wenn der Text tatsächlich eine Kommazahl ist. Das Komma muss ein Punkt sein.

text = "3.14"
float_value = float(text)

Wenn durch eine Benutzer-Eingabe die Nachkommastellen durch ein Komma getrennt sind, dann muss das Komma zuerst durch einen Punkt ersetzt werden.

text = "3,14"
text = text.replace(',','.')
float_value = float(text)

Durch die Umwandlung in eine Gleitkommazahl kann man mit Berechnungen und Operationen weitermachen.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren