Seite 1 von 1

Konvertierung zu bytes wird als Ascii-Zeichen zurückgegeben

Verfasst: Samstag 13. August 2022, 10:57
von AndreNRW
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!

Re: Konvertierung zu bytes wird als Ascii-Zeichen zurückgegeben

Verfasst: Samstag 13. August 2022, 12:47
von __blackjack__
@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)

Re: Konvertierung zu bytes wird als Ascii-Zeichen zurückgegeben

Verfasst: Samstag 13. August 2022, 12:54
von __deets__
Das ist schon das richtige. Der Buchstabe entspricht dem Wert 0x64. Python stellt bei Bytes alles, was in ascii ist, auch so dar. Das ist aber kein Problem für Deine Anwendung.

Re: Konvertierung zu bytes wird als Ascii-Zeichen zurückgegeben

Verfasst: Samstag 13. August 2022, 14:09
von AndreNRW
Ah super, ich danke euch vielmals. Muss gestehen, dieses Grundverständnis fehlte mir hier. Aber verstanden, die Daten werden trotz "anderer" Darstellung ja richtig übertragen.