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

Résolu
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

6 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
par exemple:
entier=65
octet=entier.to_bytes(1,byteorder='big')
print(entier,octet)
0
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
exactement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Ou alors si on peut convertir un grand binaire (qu'importe sa taille) en une suite de byte ?
0
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Oubliez ce que je viens de dire suffit de lire la doc de read() ;-)
0