2017-09-08 7 views
3

Ich versuche, eine ushort in Bytes zu konvertieren. Allerdings, wenn ich versuchen Sie dies:Python 3.4: Konvertieren von ushort in Bytes

>>import struct 
>>val =struct.pack('<H',10000) 
b"\x10'" 

Statt:

b'\x10\x27' 

Ist das ein Fehler? Oder ich mache nur etwas Dummes?

Ich werde diese Daten auf ein serielles Gerät schreiben.

Vielen Dank im Voraus.

+1

'b "\ x10' "' und 'b‘ \ x10 \ x27'' sind das Gleiche. 'b '\ x27' == b" '"'. Probieren Sie 'print (b '\ x10 \ x27')' und Sie erhalten 'b" \ x10 '"' als Ausgabe. –

+0

Nur ein Follow-up, wird es keine negativen Auswirkungen haben, wenn ich versuche, das für die serielle Kommunikation zu schreiben? Ich hatte vorher ein Problem in einem meiner Projekte, bei dem der Mikrocontroller nicht mehr reagiert, sobald wir einen Wert wie "50" eingeben. Nochmals vielen Dank, @Rawring – Kucosyn

+0

Es gibt keine negativen Auswirkungen, weil es * das gleiche ist *. "b" \ x27 "und" b "sind identisch. Sie sind nur zwei verschiedene Dinge, um dasselbe zu schreiben. So können Sie '0xA',' 0o12' oder '10' schreiben, um auf die gleiche Nummer zu verweisen. – poke

Antwort

2

Es ist eine alternative Darstellung für \x27:

>>> hex(ord("'")) 
'0x27' 

Sie werden keine Probleme haben, auf die int Darstellung Umwandlung zurück:

>>> int.from_bytes(b"\x10'", 'little') 
10000 
+0

Danke, @Mosen. Ich war nur besorgt, dass es Probleme verursachen würde, wenn ich versuche, Schreibdaten für die serielle Kommunikation zu verwenden. – Kucosyn

Verwandte Themen