2017-05-15 11 views
0

Je travaille actuellement sur un projet d'école de python où je dois recevoir des paquets à partir du serveur TFTP et les écrire dans un fichier jpgPython..How pour changer de chaîne de jpeg brut à un format de fichier

J'ai réussi à recevoir tous les paquets et stocker tous dans une chaîne où la chaîne ressemble à ceci:

« ! ÿØÿàÇeæuNþ¤æú; o # ýeæÞ « 7 » ....... Lê » et ainsi de suite, la taille la chaîne est 19622.

Maintenant, ce que je voudrais savoir, c'est s'il y a un moyen d'écrire cette chaîne à l'image sur le disque?

et existe-t-il un meilleur moyen de recevoir les paquets dans un meilleur type de données tel que dataoutputSstream par exemple?

Merci,

Répondre

0

Ces chaînes sont en fait juste la représentation visuelle des valeurs de ces octets ascii, alors vous devriez vraiment être de les stocker dans bytes like objets (qui devrait être le type par défaut que vous recevez TCP/UDP données dans). Si vous recevez littéralement un fichier JPG sur le réseau, tout ce que vous avez à faire est d'écrire ces octets dans un fichier binaire, ala open("file_name.jpg", "wb") et assurez-vous que le nouveau fichier que vous avez créé a l'extension .jpg. Si les données sont les mêmes, elles seront interprétées de la même manière que les anciens fichiers jpg, quel que soit le support sur lequel vous les avez envoyés. Il est important de les stocker dans des tableaux d'octets ou similaires, car vous voulez vous assurer que les données que vous avez reçues sont réellement écrites en tant que valeur binaire physique, et non une version textuelle de cette chaîne.

Il existe un seul type de fichier, à savoir le fichier binaire. Même les fichiers texte sont des fichiers binaires. Mais nous séparons l'idée de "lisible par l'homme" et de "binaire" en format binaire et en format texte. Un fichier python, tous les formats .txt, ce sont tous des fichiers texte utilisant cette convention. Un jpg, png, un programme compilé, ou fondamentalement n'importe quel code dont la représentation ne peut pas être analysée via ASCii, UDP-8, 16, 32, 64 etc, ou toute autre représentation textuelle est un fichier binaire. La chose à propos des fichiers est, parce qu'ils sont tous binaires, ils sont interprétés en fonction de ce que vous dites à un autre programme (d'où les extensions de fichiers), et même si le programme le permet, vous pouvez simplement ignorer l'extension et dites simplement à votre éditeur "interpréter ceci comme un fichier X".