[Python-de] mit Bytes rechnen

Christopher Arndt chris at chrisarndt.de
Mi Mai 13 11:22:47 CEST 2015


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

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 979 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://mail.python.org/pipermail/python-de/attachments/20150513/8911b640/attachment.sig>


Mehr Informationen über die Mailingliste python-de