Ich bin neu hier, daher erst einmal ein herzliches Hallo!
Python ist für mich ziemlich neu, daher habe ich eine Frage, wo die meisten von euch bestimmt nur schmunzeln werden aber ich kriege das einfach auch nach vielen Recherchen nicht hin.
Ich will über die serielle Schnittstelle Daten im bytes-Fromat übertragen aber habe ein Problem beim Konvertieren von Zahl oder String zu Bytes.
Ich will z.B. den Wert 100 in Bytes umwandeln. Das mache ich so:
ValueWatt = 100
bytes_ValueWatt = ValueWatt.to_bytes(2, 'big')
print(bytes_ValueWatt)
Als Ausgabe erhalte ich:
b'\x00d'
Ich benötige aber:
b'\x00\x64'
So wie ich das verstehe, wird der zweite Byte-Wert wohl als Ascii-Wert interpretiert und deswegen wird das "d" anstatt "\x64" zurückgegeben.
Aber wie kann ich das unterdrücken? Es soll "\x64" rauskommen und nicht das Ascii-Zeichen!
Konvertierung zu bytes wird als Ascii-Zeichen zurückgegeben
- __blackjack__
- User
- Beiträge: 13099
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@AndreNRW: Werte im druckbaren ASCII-Bereich werden in der `str()`- bzw. `repr()`-Darstellung von `bytes`-Objekten als ASCII-Zeichen dargestellt. Mit dieser Darstellung macht man ja aber nichts, also ist das auch kein Problem. Warum denkst Du denn da "\x64" zu brauchen? Ob "\x64" oder "d" ist doch völlig egal, das ist der gleiche Bytewert, und um den geht es ja, nicht wie das dargestellt wird, wenn man sich die `repr()`-Darstellung anschaut. Über eine serielle Schnittstelle werden die Bytewerte übertragen, nicht irgendeine Darstellung die nur für Menschen/Programmierer gedacht ist.
Code: Alles auswählen
In [188]: b"d" == b"\x64"
Out[188]: True
In [189]: b"d"[0], b"\x64"[0]
Out[189]: (100, 100)
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman