1

読み取り可能な文字のみを認識し、行末文字で終了するReadLineのようなコマンドで読み取ることができる文字にバイトを圧縮するための最も適切なエンコーディングまたはメソッドを探しています。それを達成するための一般的な方法はおそらくありますが、エンコーディングについてはよくわかりません。

現在、16進数の文字列としてバイトを出力しているので、1バイトを表すには2バイトが必要です。それはうまく機能しますが、遅いです。例:値が255のバイトは「FF」として表されます。

MP3データを出力しているので制限はありますが、3〜4倍小さいと思いますが、どうすればいいのかわかりません。文字列をZIPで圧縮する必要がありますか、それともオーバーヘッドが多すぎますか?

ASCII85にはランダムなヌルバイトとEndOfLineが含まれていますか、それとも安全ですか?

4

1 に答える 1

1

mp3ファイルを圧縮しないでください。圧縮してもあまり(またはまったく)得られません。

ウィキペディアの記事では印刷可能なASCII文字のみを使用しているとかなり明確に説明されていると思うので、質問する前にAscii85を読んでいないことに少しがっかりしています。したがって、行末やnullバイトはありません。それは効率的であり、変換もかなり単純で迅速です-データを4バイトのintに分割します。int値を85で繰り返し除算し、モジュロ+ 33のASCII値を取得することにより、これらを5つのAscii85桁に変換します。

Base64またはUUEncodeの使用を検討することもできます。これらはかなり人気があり(たとえば、電子メールの添付ファイルで使用される)、多くのライブラリがこれらを準備していることがわかります。しかし、それらはあまり効率的ではありません。

于 2012-09-30T21:12:43.383 に答える