Encodeur et décodeur de fichiers en base64
Résolu
UltraBot
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
NHenry Messages postés 15219 Date d'inscription Statut Modérateur Dernière intervention -
NHenry Messages postés 15219 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai créé deux programmes.
Le premier sert à convertir un fichier quelconque en un fichier texte base64, et l'autre sert à faire l'inverse
Le problème, c'est que quand je convertis un GROS fichier vidéo en base64, puis le reconvertis en vidéo, le fichier obtenu au final est corrompu.
Voici le premier programme :
Voici le deuxième programme :
Quelqu'un pourrait-il m'expliquer pourquoi le fichier que j'obtiens finalement est corrompu ?
Merci d'avance pour votre réponse
J'ai créé deux programmes.
Le premier sert à convertir un fichier quelconque en un fichier texte base64, et l'autre sert à faire l'inverse
Le problème, c'est que quand je convertis un GROS fichier vidéo en base64, puis le reconvertis en vidéo, le fichier obtenu au final est corrompu.
Voici le premier programme :
import base64 file_path = input() file = open(file_path, 'rb') file_2 = open(file_path+'.txt', 'wb') while True: data = file.read(10000000) data_encoded = base64.b64encode(data) file_2.write(data_encoded) if not data: break file.close() file_2.close()
Voici le deuxième programme :
import base64 file_path = input() file = open(file_path+'.txt', 'rb') file_2 = open(file_path, 'wb') while True: data = file.read(10000000) data_decoded = base64.b64decode(data) file_2.write(data_decoded) if not data: break file.close() file_2.close()
Quelqu'un pourrait-il m'expliquer pourquoi le fichier que j'obtiens finalement est corrompu ?
Merci d'avance pour votre réponse
A voir également:
- Python base64 to file
- .Bin file - Guide
- Host file - Guide
- .Dat file - Guide
- Qwerty to azerty - Guide
- Iso file - Guide
1 réponse
Réfléchis un peu à ton code, tu lis une partie du fichier, 10 000 000 octets 10 Mo, puis tu convertit cette partie en base 64 (soit 13333333,3333 octets à l'arrivée (donc 2= à la fin), cela représente 13 333 335 octets).
Pour l'inverse tu lis 10 000 000 octets 10 Mo de base 64 que tu reconvertis en binaire, il y a une dissymétrie ...
Tu ne semble pas avoir compris comment fonctionne la base 64, renseignes-toi plus.
Pour l'inverse tu lis 10 000 000 octets 10 Mo de base 64 que tu reconvertis en binaire, il y a une dissymétrie ...
Tu ne semble pas avoir compris comment fonctionne la base 64, renseignes-toi plus.
UltraBot
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
Que faut-il faire ?
UltraBot
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
Aussi, je peux convertir un PETIT fichier en base64 puis faire l'inverse sans problème. Pourquoi ?
NHenry
Messages postés
15219
Date d'inscription
Statut
Modérateur
Dernière intervention
365
Car tu coupes ton fichier dans les 2 sens et comme les coupures ne sont pas au même endroit, cela "casse" le fichier.
UltraBot
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
Comment résoudre ce problème ?
NHenry
Messages postés
15219
Date d'inscription
Statut
Modérateur
Dernière intervention
365
Soit convertir tout le fichier d'un coup ou faire un découpage plus cohérent du fichier.