Convertir un octet en sa représentation numérique et vise-versa [Résolu]

Signaler
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020
-
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020
-
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

Messages postés
11460
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655
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.
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

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
Messages postés
11460
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655 >
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

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)
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

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 ?
Messages postés
11460
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655
par exemple:
entier=65
octet=entier.to_bytes(1,byteorder='big')
print(entier,octet)
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

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 ?
Messages postés
11460
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655
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.
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

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 ?
Messages postés
11460
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655
exactement.
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

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 ?
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

Ou alors si on peut convertir un grand binaire (qu'importe sa taille) en une suite de byte ?
Messages postés
15
Date d'inscription
lundi 17 février 2020
Statut
Membre
Dernière intervention
25 février 2020

Oubliez ce que je viens de dire suffit de lire la doc de read() ;-)