Base84がファイル名にふさわしい理由

Base84 deserves a place in file names

TurboCryptがWindows対応のためBase91からBase84へ切り替えた。Windowsでは9文字が禁止され、末尾のドットも避ける必要があるため、84文字のアルファベットが最適。5文字で32ビットを約95%の確率で格納し、拡張率はBase64の33.3%より小さい25.2%。予約デバイス名も自然に回避できる。

5文字はスイートスポットだ。84⁵ = 4,182,119,424で、2³²にわずか2.6%足りない。
  1. abound

    > エンコード順のアルファベットはこれだ:

    > ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&'()+,-;=@[]^_`{}~

    ええ、シェルから何か操作する必要があるなら、ファイル名に最後の約22文字なんて絶対に欲しくないね

  2. bensyverson

    英数字以外の文字はトラブルの元でしかない。エージェントはそれらを正しくエスケープできず、$は変数展開されてしまうだろう。

    Base62(あるいは-_を使った64)で全く十分だ。

  3. killerstorm

    base32より27%効率的だが、シェルスクリプトなどとのあらゆる奇妙な互換性問題を犠牲にしている。うわぁ!

  4. Dwedit

    一方、Windowsは内部的にどこでもUTF-16を使っているので、「a」も「あ」もどちらも2バイトの大きさだ。ファイル名からサロゲートペアとUnicode制御文字を除外する必要は依然としてあるだろう。

  5. chaps

    馬鹿げていて、ほんの些細な関連しかない質問だが……Base83は何か独自に役立つ点があるのだろうか?

この日のほかの記事

2026-09-13