Unterschied zwischen '\ x81' und 0x81
Frage
Ich bin neu in Python und versuche, einige Werte von einem USB-Gerät über PyUSB zu lesen.Nun, es funktioniert jetzt, aber ich hatte einige Probleme: Beim Lesen von Daten vom Gerät benötigt PyUSB einen Endpunkt, von dem die Daten gelesen werden können.Dieser Endpunkt wird über einen Hex-Wert identifiziert.Wenn ich die Daten wie ... lese
dev.read('\x81', ...)
... Ich erhalte die Fehlermeldung "AttributeError: 'NoneType' Objekt hat kein Attribut 'bmAttributes'".Wenn ich die Daten wie ... lese
dev.read(0x81, ...)
... es funktioniert.
Meine einfache Frage lautet also: Was ist der Unterschied zwischen 0x81 und '\ x81'?
:-)
Lösung
In Python 2.x ist '\x81'
ein Bytestring, der aus einem einzelnen Byte mit dem Wert 129 besteht. Sie können ihn auch durch Aufrufen von chr(129)
abrufen.
0x81
ist eine in Basis 16 geschriebene Ganzzahl mit dem Wert 129. Sie können sie auch erhalten, indem Sie einfach 129
schreiben.
Andere Tipps
\ x81 entspricht einem Unicode-Zeichen mit 81 Hex-Code, 0x81 ist ein gültiger Hexadezimalwert.
Der erste ist eine Zeichenfolge mit einem bestimmten Hex-Wert, der in die erste Zeichenposition gezwungen wird, der zweite ist eine Ganzzahl.
Anscheinend erwartet dieser API-Aufruf definitiv eine Ganzzahl.
0x81 sendet eine Hexadezimalzahl, nach der es fragt, während '\ x81' eine Zeichenfolge sendet.Deshalb funktioniert der zweite, hoffe, das hilft und ist genau das, was Sie gefragt haben :)