web-dev-qa-db-ja.com

UUENCODEはバイナリファイルをどのくらい大きくしますか?

電子メールに添付して送信されるバイナリファイルは、最初にUUENCODE化する必要があることをどこかで読んだことを覚えています。これにより、ファイルサイズがかなり大きくなります。したがって、FTP、Skypeなどの他の直接転送手段を介してファイルを送信する方がよいのはなぜですか。

UUENCODEはバイナリファイルをどれだけ大きくしますか?

2
glenneroo

短い答え:

Uuencodeされたファイルのサイズは、元のファイルよりも約35%大きくなります。


長い答え:

Uuencodeファイルは次のようになります。

 begin 600 filename 
 * "F9O; R!B87(*" @ `` 
 `
 end 
  • つまり、beginの場合は7バイト、アクセス許可の場合は3バイト、区切りスペースの場合は2バイトです。
  • ファイル名のXバイト(名前によって異なります)
  • 次に、実際にエンコードされたデータ。 6ビットごとに8ビットにマップされます(結果はすべて印刷可能ASCII chars)です。これにより、サイズがに増加します。 8/6、または元のサイズの1/3倍。
  • 次に、結果は65文字の行に分割されるため、結果は80文字になります。ワイドスクリーン。これにより、65文字ごとに改行が追加されます。したがって、ファイルサイズを 1/65th
  • 最後にendの3バイト

したがって、次のようになります。13バイト、ファイル名の長さ、および1 68/195th 元のファイルサイズの。

( 68/195th 1⅓プラスです 1/65、または1 65/195 プラス 3/195。これは35%に非常に近いため、経験則では、サイズが3分の1大きくなります。

4
Hennes

一般的な最新の電子メールクライアントはbase64を使用します。これにより、ファイルが約35%大きくなりますが、電子メール内でのみ使用されます。

最近では、通常、base64が代わりに使用されます。元のバイナリの各バイトには8ビットが含まれています。 Base64は、エンコードされた各バイト内に6ビット相当の元のデータを格納できます。したがって、エンコードされたサイズは元のサイズの8/6です。

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

次に、改行が追加され、さらに数パーセント追加されます。

もちろん、ファイルがデコードされて受信者のファイルシステムに保存されると、デコードされたファイルは元のファイルと同じになります。

2
depquid

実際の答え(@Per Salmiと@depquidによって与えられる)は33%を少し超えていますが(3バイトは4になり、行末といくつかのハウスキーピングがあります)、uuencodeについて心配する必要はありません。

uuencodeは、MIMEメーラーが登場する前の、UNIXの非常に古い時代にさかのぼります。当時、テキストのみの環境(Mail、netnews/usenetなど)でバイトをシュレップするには、7ビット文字で安全になるようにファイルを手動でエンコードする必要がありました。次に、受信者はファイルを手動でどこかに保存し、場合によっては複数のメール/投稿を連結して注文し、uudecode(BEGIN/ENDブロック以外のものを無視するのに十分賢い)を実行してバイナリファイルを取得する必要があります。しかし、少なくともメールの場合は、もうそれを行う必要はありません。

最新のメーラーを使用している場合、 このクロスエンコーディングはすでに自動的に行われます 。バイナリMIME要素は通常base64でエンコードされます(@depquid状態など)。

したがって、すでにMIME Base64エンコーディングを実行しています。これにより、帯域幅割り当てへの影響について知りたい場合は、ファイルが33%を少し超えて爆発します。 uuencode/uudecodeを実行すると、自分側と受信側の両方でさらに多くの作業が追加されます。

2
Rich Homolka

実際のコンテンツに依存するため、uuencodeされたコンテンツの大きさを正確に知ることはできないと思いますが、 ウィキペディアの短所セクション で元のコンテンツよりも少なくとも40%大きいと述べられています。 。

0
Per Salmi