Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertire une chaine de nombre en nombre binaire

    20 novembre 2019 à 0:02:34

    Bonjour, je dois créer un programme qui , quand on entre une phrase, doit transformer les caractères en nombres ascii (via ord()) et convertir ces nombres en nombrse binaires (via bin()) sans les "0b", par exemple:

    A=65=0b1000001=1000001

    J’ai réussie à trouver comment convertir les caractères d'une phrase en un suite de nombre, exemple ci dessous.

    Je ne sais à présent plus comment convertir ces chiffres en nombres binaires (espacés entre eux).

    Merci de vos futurs réponses.

    image : https://www.cjoint.com/c/IKtxhyuAu53

    -
    Edité par AnonymeAninyme 20 novembre 2019 à 0:08:25

    • Partager sur Facebook
    • Partager sur Twitter
      20 novembre 2019 à 9:24:27

      Tu parles de ascii mais dans ton code tu décode en utf-8

      Et pourquoi ne pas utiliser la méthode encode ?

      >>> mot = "azerty"
      >>> mot.encode("ascii")  # ou "utf-8"
      b'azerty'
      >>> list(mot.encode("ascii"))
      [97, 122, 101, 114, 116, 121]
      >>> int.from_bytes(mot.encode("ascii"), "big")
      107178315904121
      



      • Partager sur Facebook
      • Partager sur Twitter
        20 novembre 2019 à 9:40:19

        Ça ce fait bien en 2 étapes.

        Pour convertir la chaîne de caractères en une liste de nombres tu n'as pas besoin du module array.

        s = input("Saisie: ")
        d = s.encode() # UTF-8 vaut mieux que ASCII.
        ls = list(d)


        Pour avoir la représentation de chaque octet en binaire sans le sufixe '0b', le slicing est la bonne solution.

        # ls = []
        # for n in input("Saisie: ").encode()
        #     ls.append(bin(n)[2:])
        
        ls = [bin(n)[2:] for n in input("Saisie: ").encode()]



        -
        Edité par GneuGneu1 20 novembre 2019 à 9:40:48

        • Partager sur Facebook
        • Partager sur Twitter
          20 novembre 2019 à 20:28:31

          Auriez une méthode simplifier, pour avoir le même résultat, juste avec input();bin();len();ord();list();for x in range (sans array ni encode) ?? Sans autres fonctions , svp merci quand même de vos réponses c'est superbe!
          • Partager sur Facebook
          • Partager sur Twitter

          Convertire une chaine de nombre en nombre binaire

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown