2 Bytes zu signed integer 16

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
capptn
User
Beiträge: 2
Registriert: Freitag 4. Dezember 2020, 11:23

Hallo zusammen,

ich habe folgendes Problem:

ich empfange über die Serielle Schnittstelle 20 Bytes, diese möchte ich jetzt in lesbare Werte konvertieren.
Eine Dokumentation der Werte ist leider nicht verfügbar, also habe ich ein wenig reverse engineering betrieben.
Dabei ist herrausgekommen das z.B. die erste beiden Bytes 0xFF und 0x60 einen der Werte (-160) darstellen.

Jetzt möchte ich diese beiden Bytes kombinieren zu einem signed integrer 16, aber ich bekomme es nicht hin.
Das nächste Problem ist das ich in der verwendeten Umgebung keine externen Librarys wie Numpy installieren kann.

Hat jemand eine Idee wie ich das machen kann?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das eingebaute Modul struct kann das.
capptn
User
Beiträge: 2
Registriert: Freitag 4. Dezember 2020, 11:23

Danke für deine Antwort,

habe mir struct nochmal genauer angeschaut...

Funktioniert:

data = [255, 96]
int16 = struct.unpack(">h", bytearray(data))[0]

👍🏼
Antworten