web-dev-qa-db-fra.com

Supprimez le caractère 'b' en face d'un littéral de chaîne dans Python 3

Je suis nouveau dans la programmation python et je suis un peu confus. J'essaie d'obtenir les octets d'une chaîne de hachage et de chiffrer, mais je me suis

b'...'

caractère b devant la chaîne, comme dans l'exemple ci-dessous. Y a-t-il moyen d'éviter cela? Quelqu'un peut-il donner une solution? Désolé pour cette question idiote

import hashlib

text = "my secret data"
pw_bytes = text.encode('utf-8')
print('print',pw_bytes)
m = hashlib.md5()
m.update(pw_bytes)

SORTIE:

 print b'my secret data'
46

Le décodage est redondant

Vous avez seulement eu cette "erreur" en premier lieu, à cause d'un malentendu sur ce qui se passe.

Vous obtenez le b parce que vous avez encodé en utf-8 et que c'est maintenant un objet octet.

 >> type("text".encode("utf-8"))
 >> <class 'bytes'>

Corrections:

  1. Vous pouvez simplement imprimer la chaîne en premier
  2. Le décoder de manière redondante après l'encodage
19
Pythonista

Cela devrait faire l'affaire:

pw_bytes.decode("utf-8")
111
krock

Ici tu vas

f = open('test.txt','rb+')
ch=f.read(1)
ch=str(ch,'utf-8')
print(ch)
12
Muhammad Younus