web-dev-qa-db-fra.com

Python argument sans chaîne)

J'essaie de lancer ce morceau de code, et il continue à donner une erreur disant "argument de chaîne sans encodage"

ota_packet = ota_packet.encode('utf-8') + bytearray(content[current_pos:(final_pos)]) + '\0'.encode('utf-8')

De l'aide?

39
lonely

Vous passez un objet chaîne à un bytearray():

bytearray(content[current_pos:(final_pos)])

Vous devrez fournir un argument de codage (second argument) pour pouvoir le coder en octets.

Par exemple, vous pouvez le coder en UTF-8:

bytearray(content[current_pos:(final_pos)], 'utf8')

À partir de la bytearray() documentation :

Le paramètre optionnel source peut être utilisé pour initialiser le tableau de différentes manières:

  • S'il s'agit d'une chaîne, vous devez également donner le codage (et éventuellement, des erreurs ) paramètres; bytearray() convertit ensuite la chaîne en octets à l'aide de str.encode().
61
Martijn Pieters