Décodage en Base64 chaîne de tableau d'octets

Je voudrais créer un script python qui permet de décoder un Base64 chaîne dans un tableau de byte (ou un tableau de valeurs en Hexadécimal).

Intégré à côté de mon projet est un micro-contrôleur qui crée une chaîne base64 à partir de brut. La chaîne contient des caractères imprimables (pour cette raison je choisir l'encodage base64).

Sur le côté Pc j'ai besoin de décoder la chaîne base64 et récupérer le raw d'origine octets.

Mon script utilise python 2.7 et la base64 de la bibliothèque:

base64Packet = raw_input('Base64 stream:')

packet = base64.b64decode(base64Packet )

sys.stdout.write("Decoded packet: %s"%packet)

La chaîne résultante est une chaîne de caractères qui contient quelques pas imprimable char.

Est-il un moyen de décodage base64 chaîne d'octets (ou hex) valeurs?

Merci d'avance!

  • Vous l'avez déjà bytestring. La sortie que vous l'espériez et que voyez-vous? Peut-être que tu voulais l'utiliser %r au lieu de cela lors de l'impression?
  • Après décodage je voudrais avoir une liste python qui contiennent chaque octet.
  • Pourquoi avez-vous besoin? Avez-vous besoin de manipuler des octets? Un str objet est déjà une séquence, vous pouvez vous adresser à chaque octet avec packet[index], par exemple, ou en boucle sur la chaîne avec for byte in packet:.
  • Vous pouvez créer la liste en utilisant simplement list(packet), la production d'une liste de 1 caractère (octet) les chaînes de caractères. Ou peut-être vous voulez utiliser un bytearray objet à la place, mais il n'est pas clair ce que vous voulez faire avec vos données. Vous n'avez pas donné votre cas d'utilisation.
  • Oui j'ai besoin de manipuler les octets spécifiques! Par exemple je veux analyser l'octet. Puis-je convertir la chaîne de liste de manipuler les octets? Merci
  • L'analyse ne nécessite pas de conversion, il suffit d'indexation ou de découpage. Le struct module par exemple n'a besoin de rien d'autre, mais la chaîne de caractères que vous avez déjà.
  • Oui, je sais, mais je préfère avoir une liste avec entier ou une valeur hexadécimale à déboguer le script.
  • Alors vous voulez un bytearray() instance; utilisez simplement bytearray(packet). Un objet bytearray est une mutable séquence d'entiers dans la plage de 0 à 255, un nombre entier par octet.
  • J'ai résolu avec cette ligne de code: packetString = liste(bytearray(base64.b64decode(base64Packet))). Merci!

InformationsquelleAutor Federico | 2016-08-29