2017-09-08 4 views
3

J'essaie de convertir un ushort en octets. Cependant, quand j'essaie ceci:Python 3.4: Conversion ushort en octets

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

Au lieu de:

b'\x10\x27' 

Est-ce un bug? Ou je fais juste quelque chose de stupide?

Je vais écrire ces données sur un périphérique série.

Merci d'avance.

+1

'b "\ x10' "' et 'b » \ x10 \ x27'' sont la même chose. 'b '\ x27' == b" '"'. Essayez 'print (b '\ x10 \ x27')' et vous obtiendrez 'b '\ x10'" 'en sortie. –

+0

Juste un suivi, n'aura-t-il pas d'effets négatifs quand j'essaye d'écrire cela pour la communication série? J'avais un problème auparavant dans un de mes projets où le microcontrôleur cesse de répondre une fois que nous envoyons une valeur comme "50" dedans. Merci encore, @Rawring – Kucosyn

+0

Il n'y a pas d'effets négatifs car c'est * la même chose *. 'b '\ x27'' et' b' '' 'sont ** identiques **. Ils sont juste deux choses différentes pour écrire la même chose. Comme vous pouvez écrire '0xA',' 0o12' ou '10' pour désigner le même nombre. – poke

Répondre

2

Il est une autre représentation pour \x27:

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

Vous n'avez des problèmes de conversion retour à la représentation int:

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

Merci, @Moses. J'étais juste inquiet que cela causerait des problèmes quand j'essaye d'employer des données d'écriture pour la communication en série. – Kucosyn