2017-09-29 5 views
-1

J'essaie de créer une chaîne d'octets, mais il semble être juste une chaîne de caractères régulière. Qu'est-ce que je fais mal ici?créer une chaîne d'octets en python

example

byteStr = b'some string' 
byteStr #'some string' 
utfStr = 'some string'.encode('utf-8') 
utfStr #'some string' 
byteStr == utfStr #True 
+0

Votre bytestring est créé correctement; juste parce que c'est égal à un charstring ne veut pas dire que c'est faux. Je ne répondrai pas parce que je ne sais pas comment fonctionnent les bytestrings mais en comparant les bytestrings et les charstrings, je donnerai (généralement) 'True'. – HyperNeutrino

+0

@HyperNeutrino mis à jour, je m'attendais à l'impression de byteStr pour montrer un b avant la première citation, et le test d'équivalence à l'échec –

+0

@HyperNeutrino je vois, aussi, quand je cours type (byteStr) je reviens . Est-ce exact? –

Répondre

1

Si vous essayez de créer un tableau d'octets en Python 2, il est appelé bytearray. Python 2 does not have a byte string.. The b in front of the str is ignored in Python 2, ce qui signifie 'hello' == b'hello'

Essayez ceci:

>>> f = b'f' 
>>> type(f) 
<type 'str'> 

Maintenant, il est important de se rappeler que u'f' == 'f':

>>> h = u'f' 
>>> f == h 
True 
>>> type(h) 
>>> <type 'unicode'> 
+0

Ahhh, je vois. Le tutoriel que je suis en train d'utiliser python3 explique la différence. Je vous remercie! –

+0

comme une question de suivi rapide, pourquoi taper (uftStr) dans mon exemple retourner au lieu de ? Il semble que la fonction .encode ('utf-8') ne fonctionne pas –