オンラインデータ圧縮シミュレーター
テキストのハフマン符号を調べ、UTF-8とペイロードのビット数を比較して結果をコピー。圧縮ファイルを生成しない学習用シミュレーター。処理はブラウザ内でローカルに行われます。
使ってみる
結果の意味
Unicodeコードポイントごとに出現回数を数え、頻度の低い2つのノードを順に結合して2分ハフマン木を作ります。記号が1種類だけなら符号は0です。この実装では、完全に同じ入力からは同じ符号が得られます。同頻度のノードを別の順序で扱う実装では異なる有効な符号になる場合があるため、重み付きペイロード長を比較してください。
入力して確認できる例
ABBCではB=0、A=10、C=11となり、2×1 + 1×2 + 1×2 = 6ビットのペイロードに対して元のUTF-8は32ビットです。AAAAは32ビットと4ビット、中国語の你好は48ビットと2ビット、実際の文字😀😀は64ビットと2ビットです。
入力上限と表示
上限はJavaScriptのUTF-16コード単位で100,000です。UTF-8バイト数や見た目の文字数ではありません。多くの絵文字は2コード単位を使い、1つに見える絵文字列が複数コードポイントを含むこともあります。空のテキストは拒否されますが、空白だけのテキストも有効なデータです。JSONでは改行を\n、タブを\t、通常の空白を引用符付きの" "として表示します。この表記は入力記号を変更しません。
学習用の範囲
元のビット数はUTF-8のバイト長を8倍した値です。ペイロードは各記号の出現回数と符号長の積を合計します。符号表、木、ヘッダー、パディング、コンテナーの情報は含まないため、実際の圧縮ファイルサイズや容量削減を保証しません。アーカイブ、ダウンロード可能な圧縮バイナリー、解凍プログラムは生成せず、暗号化でもありません。計算はブラウザー内で行われ、記号の種類が多いと結果の表が長くなります。
処理はブラウザ内でローカルに行われます。