Encodeur et décodeur de fichiers en base64

Résolu/Fermé
UltraBot Messages postés 67 Date d'inscription mercredi 17 avril 2019 Statut Membre Dernière intervention 15 juin 2019 - 19 mai 2019 à 15:07
NHenry Messages postés 15177 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 2 janvier 2025 - 22 mai 2019 à 19:15
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 :
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:

1 réponse

NHenry Messages postés 15177 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 2 janvier 2025 350
19 mai 2019 à 16:40
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.
0
UltraBot Messages postés 67 Date d'inscription mercredi 17 avril 2019 Statut Membre Dernière intervention 15 juin 2019
19 mai 2019 à 16:56
Que faut-il faire ?
0
UltraBot Messages postés 67 Date d'inscription mercredi 17 avril 2019 Statut Membre Dernière intervention 15 juin 2019
19 mai 2019 à 17:01
Aussi, je peux convertir un PETIT fichier en base64 puis faire l'inverse sans problème. Pourquoi ?
0
NHenry Messages postés 15177 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 2 janvier 2025 350
19 mai 2019 à 18:26
Car tu coupes ton fichier dans les 2 sens et comme les coupures ne sont pas au même endroit, cela "casse" le fichier.
0
UltraBot Messages postés 67 Date d'inscription mercredi 17 avril 2019 Statut Membre Dernière intervention 15 juin 2019
19 mai 2019 à 18:43
Comment résoudre ce problème ?
0
NHenry Messages postés 15177 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 2 janvier 2025 350
19 mai 2019 à 19:04
Soit convertir tout le fichier d'un coup ou faire un découpage plus cohérent du fichier.
0