Combien plus grand UUENCODE crée-t-il des fichiers binaires?

Je me souviens d'avoir lu quelque part que tous les fichiers binaires envoyés à un courrier électronique doivent être d'abord UUENCODEd, ce qui rend les formats de fichiers considérablement plus importants, d'où pourquoi il est préférable d'envoyer des fichiers via un autre moyen de transfert direct, tels que FTP, Skype, etc.

Combien plus grand UUENCODE fera-t-il mes fichiers binaires?

Réponse courte:

La taille du fichier uuencoded sera environ 35% plus grande que le fichier original.

Longue réponse:

Les fichiers Uuencode ressemblent à ceci:

 Commence le nom de fichier 600
 * "F9O; R! B87 (*" @ ``
 `
 fin              
  • C'est-à-dire 7 octets pour begin , trois pour les autorisations, deux pour les espaces de séparation.
  • X octets pour le nom de fichier (selon le nom)
  • Ensuite, les données encodées réelles. Tous les 6 bits sont mappés à 8 bits (avec le résultat tous les caractères ASCII imprimables). Cela augmente la taille à 8/6, ou 1 fois la taille d'origine.
  • Le résultat est ensuite divisé en lignes de 65 caractères, de sorte que le résultat serait sur 80 caractères. Écran large. Cela ajoute une nouvelle ligne supplémentaire par 65 caractères. Ainsi, augmenter la taille du fichier d'ici 1/65
  • Enfin, 3 octets pour end

Ainsi, nous obtenons: 13 octets, plus la longueur du nom de fichier, plus 1 68/195 de la taille du fichier d'origine.

(Le 68/195 ème est 1⅓ plus 1/65, ou 1 65/195 plus 3 / 195. Ceci est très proche de 35%, c'est pourquoi la règle empirique est que 'la taille augmente d'un bon troisième).

Les clients de messagerie modernes communs utiliseront base64, ce qui rendra le fichier environ 35% plus grand, mais seulement dans le courrier électronique.

Ces jours-ci, base64 est normalement utilisé à la place. Chaque octet de la binaire d'origine contient 8 bits. Base64 peut stocker l'équivalent de 6 bits de données d'origine dans chaque octet codé. Ainsi, la taille codée est 8 / 6ème celle de l'original:

 8 / 6 = 1.33... = 133% = 33% more 

Ensuite, des pauses de ligne sont ajoutées, ce qui ajoute un autre couple de pour cent.

Bien sûr, une fois que le fichier est décodé pour être enregistré dans le système de fichiers du destinataire, le fichier décodé sera identique à l'original.

Bien que la réponse réelle (donnée par @Per Salmi et @depquid) est juste un peu plus de 33% (3 octets deviennent 4, plus les finitions de ligne, plus un service ménager), vous ne devrez pas vous soucier de uuencode .

uuencode date des très vieux jours d'UNIX, avant que les courriers électroniques MIME n'étaient là. À l'époque, à schlepp bytes dans les environnements texte uniquement (p. Ex., Mail, netnews / usenet), vous devriez coder manuellement le fichier pour être en sécurité 7 bits. Ensuite, le destinataire devrait enregistrer manuellement le fichier dans certains cas, éventuellement concaténer et commander des mails / messages uudecode , exécuter uudecode (ce qui était assez intelligent pour ignorer tout ce qui se trouvait en dehors des blocs BEGIN / END) et obtenir le fichier binaire. Mais nous n'avons plus besoin de le faire, du moins pas pour le courrier.

Si vous utilisez un mailer moderne, cet encodage croisé est déjà automatique . Les éléments MIME binaires sont généralement codés en base64 (comme @depquid states).

Donc, vous faites déjà l'encodage MIME Base64, qui fait exploser le fichier un peu plus de 33% si vous êtes intéressé par le succès de votre allocation de bande passante. Faire uuencode / uudecode ajouterait encore plus de travail à la fois à vous et au destinataire.

Je ne pense pas que vous puissiez dire exactement à quel point le contenu contenu serait tel qu'il dépend du contenu réel, mais il est déclaré qu'au moins 40% supérieur à l'original dans la section des inconvénients sur Wikipedia .