Convertir un octet en sa représentation numérique et vise-versa

Résolu
danieljsessec Messages postés 15 Statut Membre -  
danieljsessec Messages postés 15 Statut Membre -
Bonjour,

J'aimerai faire un système d'encodage en Python et j'aimerai pouvoir lire un fichier quelconque, et le lire octet par octet et récupérer pour chaque octet la représentation numérique (entre 0 et 255 du-coup)

Par exemple:

J'ouvre le fichier test.txt qui contient CCM

je récupère la représentation numérique de C (ex: 75), de C (ex: 75) et de M (ex: 85)

Je ne sais pas si je suis assez clair, mon code doit fonctionner pour tout type de fichier, donc pas de fonction qui altèrent les données comme bin etc..

Merci à vous

6 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    qu'as-tu essayé, sur quelle partie de l'exercice bloques-tu?
    tu n'as pas expliqué ce que tu souhaitais que le programme fasse avec la représentation numérique de l'octet.
    1
    1. danieljsessec Messages postés 15 Statut Membre
       
      Bonjour,

      Le but étant d'encoder mes octets via un algorithme que j'ai écrit en parallèle, je bloque au début de la lecture du fichier , à la théorie

      Comment ouvrir un fichier en mode binaire et récupérer tous les octets sous la forme de int
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > danieljsessec Messages postés 15 Statut Membre
         
        un exemple:
        with open("test.txt", 'rb') as f:
             o=f.read(1)
             while  o !=b"":
                i=int.from_bytes(o,byteorder='big')
                print(i)
                o=f.read(1)
        0
  2. danieljsessec Messages postés 15 Statut Membre
     
    Bonjour,

    Votre réponse est exactement ce qu'il me fallait, je vous en remercie, sauriez-vous désormais comment je pourrai revenir en arrière ? de int à byte ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      par exemple:
      entier=65
      octet=entier.to_bytes(1,byteorder='big')
      print(entier,octet)
      0
  3. danieljsessec Messages postés 15 Statut Membre
     
    Ok tout simplement merci beaucoup !

    Pour revenir à mon système d'encodage il fonctionne pas matrice, donc :

    Est-ce possible de convertir en binaire sur 8 bits une int ? Et inversement de récupérer le int du binaire ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      pour moi, un octet ou un binaire sur 8 bits, c'est du pareil au même.
      tu n'as rien montré ni expliqué de ce que tu avais réalisé et de ce que tu voulais faire.
      au départ, tu étais très clair; tu avais besoin d'octets.
      0
  4. danieljsessec Messages postés 15 Statut Membre
     
    Bonjour,

    Oui en effet c'est la même chose, au final j'ai tous les éléments pour réaliser mon projet, mise à part l'écriture d'un byte dans un fichier, ça se passe comment ? j'ouvre mon fichier en mode écriture binaire et je fais un simple write avec mon ou mes bytes ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      exactement.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. danieljsessec Messages postés 15 Statut Membre
     
    En effet je viens de tester, ça fonctionne super bien, pour terminer vous sauriez s'il existe une technique ou une façon de faire pour lire les bytes d'un fichier deux par deux ?
    0
    1. danieljsessec Messages postés 15 Statut Membre
       
      Ou alors si on peut convertir un grand binaire (qu'importe sa taille) en une suite de byte ?
      0
  7. danieljsessec Messages postés 15 Statut Membre
     
    Oubliez ce que je viens de dire suffit de lire la doc de read() ;-)
    0