Encodeur et décodeur de fichiers en base64
Résolu
UltraBot
Messages postés
72
Statut
Membre
-
NHenry Messages postés 15479 Statut Modérateur -
NHenry Messages postés 15479 Statut Modérateur -
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
- .Dat file - Guide
- Host 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
72
Statut
Membre
Que faut-il faire ?
UltraBot
Messages postés
72
Statut
Membre
Aussi, je peux convertir un PETIT fichier en base64 puis faire l'inverse sans problème. Pourquoi ?
NHenry
Messages postés
15479
Statut
Modérateur
366
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
72
Statut
Membre
Comment résoudre ce problème ?
NHenry
Messages postés
15479
Statut
Modérateur
366
Soit convertir tout le fichier d'un coup ou faire un découpage plus cohérent du fichier.