Am 13.05.2015 um 11:22 schrieb Christopher Arndt:
Am 13.05.2015 um 10:52 schrieb Stefan:
So wie ich das verstanden habe, kann ich in Python nicht mit Bytes rechnen, zumindest nicht mit einzelnen Bytes. Könnte ich aber dasselbe erreichen, wenn ich ein einzelnes Element aus einem Bytearray verwende?
Verwende statt dessen in Python 2 einfach einen String (str) und in Python 3 einen Bytestring (bytes). Beides sind so in etwa das gleiche, wie Arrays aus char in C.
Bei str musst du, um den Bytewert eines Zeichen zu bekommen, ord(c) verwenden.
Hier z.B. eine Checksummenberechnung für MIDI-Sysexdaten in Python 2:
def checksum(data): sum = 0 for c in data: sum += ord(c) return sum & 0x7f
In Python 3 muss, wenn data statt als str als bytes übergeben wird, ord() weggelassen werden, weil, wenn man über bytes iteriert, bekommt die einzelnen Elemente als int zurück. Das ist leider einer der Fälle, der es kompliziert macht, Code zu schreiben, der gleichzeitig mit Python 2 und 3 funktioniert.
Chris
Danke Chris und Diez, ich denke mal, die wichtigsten Infos habe ich. Gruß Stefan
participants (1)
-
Stefan