ich bekomme über eine Schnittstelle eine 32bit Integer Zahl in Form von 4 Einzelbytes übertragen. Diese habe ich dann in einer Liste (Bytearray). Nun möchte ich gerne die Liste wieder als Integer umformatieren um damit weiter zu rechnen!
Eine Art Typecast, oder einen direkten Speicherzugriff wie es z.B. in C möglich ist habe ich nicht gefunden!
Daraufhin habe ich mir die Integerzahl einfach
"zusammengerechnet". D.h. Einzelbytes entsprechend der Wertigkeit geshiftet und dann zusammenaddiert!
Soweit läuft das auch, allerdings mache ich dabei auch aus dem signed Integer einen unsigned Integer, d.h. negative Werte werden als Werte > 2^15 dargestellt!
Gibt es hier eine elegante Art dieses Problem zu lösen?
Bsp:
Code: Alles auswählen
liste_pos = [211, 4, 0, 0]
liste_neg = [211, 4, 254, 254]
zahl_pos = liste_pos[3]*pow(2,24) + liste_pos[2]*pow(2,16) + liste_pos[1]*pow(2,8) + liste_pos[0]
zahl_neg = liste_neg[3]*pow(2,24) + liste_neg[2]*pow(2,16) + liste_neg[1]*pow(2,8) + liste_neg[0]
print zahl_pos
>>>1235
print zahl_neg
>>>427806024