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

Résolu/Fermé
danieljsessec Messages postés 15 Date d'inscription lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020 - 21 févr. 2020 à 15:33
danieljsessec Messages postés 15 Date d'inscription lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020 - 24 févr. 2020 à 11:25
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 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
21 févr. 2020 à 18:15
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 lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
21 févr. 2020 à 19:39
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 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476 > danieljsessec Messages postés 15 Date d'inscription lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
21 févr. 2020 à 20:43
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 lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
23 févr. 2020 à 20:17
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 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
23 févr. 2020 à 20:24
par exemple:
entier=65
octet=entier.to_bytes(1,byteorder='big')
print(entier,octet)
0
danieljsessec Messages postés 15 Date d'inscription lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
23 févr. 2020 à 20:44
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 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
23 févr. 2020 à 22:35
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 lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
24 févr. 2020 à 09:35
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 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
24 févr. 2020 à 10:00
exactement.
0

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

Posez votre question
danieljsessec Messages postés 15 Date d'inscription lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
24 févr. 2020 à 10:43
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 lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
24 févr. 2020 à 10:45
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 lundi 17 février 2020 Statut Membre Dernière intervention 25 février 2020
24 févr. 2020 à 11:25
Oubliez ce que je viens de dire suffit de lire la doc de read() ;-)
0