1

XML 形式のテキスト データがあり、その長さは約 816814 バイトです。一部の画像データと一部のテキスト データが含まれています。圧縮には ZLIB アルゴリズムを使用しており、圧縮後のデータ長は 487239 バイトです。

圧縮後、BASE64Encoder を使用してデータをエンコードしています。しかし、圧縮データをエンコードした後、サイズが増加し、エンコードされたデータの長さは 666748 バイトになります。

エンコード後のデータサイズが大きくなるのはなぜですか? 他に最適なエンコード手法はありますか?

よろしく、シデッシュ

4

2 に答える 2

2

前述のように、256 の可能な値を持つバイナリ 8 ビット バイトをより小さな文字セット (この場合は 64 の値) にエンコードする場合、必然的にサイズが大きくなります。許容されるn文字のセットの場合、ランダム バイナリ入力の拡張係数は、最小で log(256)/log( n ) になります。

この影響を減らしたい場合は、より多くの文字を使用してください。使用している媒体が何であれ、64 文字を超える文字を透過的に処理できる可能性があります。可能な 256 バイトすべてを単純に送信することで、その数を調べ、どれが通過するかを確認します。候補セットを徹底的にテストし、理想的には、 n < 256のセットをバックアップするメディアのドキュメントを見つけます。

セットを取得したら、単純なハードワイヤードの算術コードを使用して、256 のセットからnのセットに変換し、その逆に変換できます。

于 2012-12-14T16:11:29.940 に答える
2

それは完全に正常です。

送信媒体がバイナリ データではなくテキスト データ (XML など) のみを送信するように設計されている場合は、Base64 を実行する必要があります。

したがって、zip ファイルは base64 でエンコードされます。

簡単に言えば、トランスコーダが「非ASCII」文字をASCII形式に変更する必要がありますが、元に戻す方法は覚えています

経験則として、約 33% のサイズ増加です ( http://en.wikipedia.org/wiki/Base64#Examples )

これが base64 の欠点です。ファイル転送をサポートするプロトコルを使用する方が良いですが、XML 内でエンコードされたファイルの場合、ほとんど選択肢がありません。

于 2012-12-14T11:05:27.400 に答える