Hexspeak変換ツール

空白で語を区切ります。未対応文字は報告され、黙って削除されることはありません。

非負の10進整数を覚えやすい16進数の語に変換したり、ラテン文字のフレーズを16進文字で表現できるか確認したりできます。10進整数モードでは生の16進値を表示し、すべての桁が条件を満たす場合に限り、0をO、1をIと読むクラシック規則を適用します。フレーズモードでは、厳密規則と範囲を明示した保守的置換を選択できます。未対応文字を黙って削除せず報告し、完全に有効な結果をコード、文書、テストデータ、覚えやすい識別子向けに整形できます。

Hexspeak変換ツールの使い方

  1. 1

    変換モードを選ぶ

    非負の10進値なら「10進整数」、単語や短いフレーズを試すなら「ラテン文字フレーズ」を選びます。

  2. 2

    フレーズの規則を決める

    フレーズモードでは、16進文字そのものだけを認める厳密規則か、O → 0、S → 5などを許す保守的規則を選びます。

  3. 3

    結果を確認して整形する

    生の16進値、読みやすい表記、未対応文字の報告を確認し、完全に有効なら大文字・小文字、接頭辞、空白の扱いを設定します。

Hexspeakを作る2つの明確な方法

16進数は16を基数とし、0–9A–Fを使います。各桁をd₀ … dₙとすると、表す整数は次のとおりです。

N = d₀ × 16ⁿ + d₁ × 16ⁿ⁻¹ + … + dₙ

10進整数モードは、最大256桁の非負の10進整数を受け取り、PHPの固定長整数の範囲に依存せず、生の大文字16進値を生成します。その後、このツールのクラシックな読み方で検証します。0 → O1 → Iと読み、A–Fは文字のままです。生の値に2から9までの数字が1つでもあれば、この厳密な読み方では成立しません。たとえば、10進数12648430は生の値C0FFEEとなり、COFFEEと読めます。一方、49191337となるため、この規則では読めません。

ラテン文字フレーズモードは、入力したフレーズを16進数の字形だけで表せるかを判定します。厳密規則ではA–Fと入力どおりの数字だけを認めます。保守的規則では、さらにO → 0IまたはL → 1S → 5T → 7G → 6を許可します。置換範囲は意図的に限定しています。未対応文字は削除せず一覧にし、フレーズ全体が有効な場合にのみ整形済み出力を提示します。

入力とモード 処理 結果
10進整数モードの3735928559 10進数から16進数へ変換 DEADBEEF
10進整数モードの3405691582 10進数から16進数へ変換 CAFEBABE
保守的フレーズモードのCOFFEE O → 0 C0FFEE
保守的フレーズモードのBAD FOOD O → 0、連続出力を選択 BADF00D

DEADBEEFCAFEBABEBADF00DC0FFEEのようなトークンは、単語に見えながら有効な16進値なので記憶しやすくなります。文書化された実例の1つが0xCAFEBABEです。Java仮想マシン仕様では、Java classファイル先頭のマジックナンバーとして定義されています。ただし、語に見える値がすべて標準または安全な識別子になるわけではありません。利用先の要件とビット幅を確認してください。

HexspeakはテキストのHEX変換ではない

テキストからHEXへのエンコーダーは、文字を符号化したバイトを変換します。たとえばUTF-8のCoffee43 6F 66 66 65 65になります。文字エンコーディングが分かれば、そのバイト列は復号できます。対してHexspeakは、限定された文字集合で単語のように見える値を作ります。O → 0I/L → 1は曖昧なので、フレーズの変換は元に戻せません。また、有効な16進数字以外も幅広く使うleetspeakより狭い規則です。

入力は最大256文字、フレーズは最大32語です。フレーズモードが対応するのは、アクセント記号のないASCIIラテン文字、数字、空白だけで、日本語の文字は直接変換できません。必要な場合は、意味が変わらないと確認したうえで自分でローマ字表記などに転写し、ダイアクリティカルマークを除いてから検証してください。10進値とフレーズはこのアプリケーションからサーバーへ送信され、複数ステップのURLに含まれる場合もあります。パスワード、認証情報、非公開の識別子は入力しないでください。

出典:NISTによる16進表記と4ビット数字の説明 · Java仮想マシン仕様のclassファイル・マジックナンバー

よくある質問

16進数の各桁がラテン文字の単語に見えるよう、値を選んだり読んだりする方法です。厳密な例はA–Fと数字だけを使い、規則によっては特定の数字を文字として読みます。置換方法に唯一の国際標準はないため、このツールは推測を正解扱いせず、使用する規則を明示します。

まず非負の10進整数全体を、機械の固定長整数に制限されず大文字16進数へ変換します。次にA–Fをそのまま残し、0をO、1をIとして読みます。生の16進結果に2から9の数字が含まれていれば、厳密なクラシック表記では無効と判定します。

厳密規則はA–Fと入力どおりの数字だけを受け付けます。保守的規則は、O → 0、I/L → 1、S → 5、T → 7、G → 6という6種類の明示した視覚的置換も許可します。これ以外のleetspeak風置換を勝手に補わず、未対応文字は検証結果に残します。

保守的規則では2つのOをゼロにでき、C、F、Eはもともと16進文字です。HELLOのHには保守的な16進代替文字がないため、Hを削除して不完全な結果を返すのではなく、未対応として報告します。

すべてのトークンが有効なら可能です。大文字または小文字、生の数字またはトークンごとの0x接頭辞、空白を残す形式または連結形式を選べます。連結すると語の境界が消えるため、読みやすさが重要なら空白を残してください。無効なフレーズを完全な結果のように整形することはありません。

いいえ。Oとゼロは同じ字形になり、IとLはいずれも1になるため、元のフレーズを常に復元できません。可逆なデータ表現が必要ならテキストからHEXへの変換またはバイトエンコーダーを使い、Hexspeakは限定文字集合で覚えやすい値を作る用途に使ってください。

ブラウザ内だけで処理される入力ではありません。サーバーを使用するため値は処理用にアプリケーションサーバーへ送信され、複数ステップのURLに含まれる場合もあります。パスワード、APIキー、機密識別子などを避けてください。通常のサーバーおよびプロキシのログ方針が適用される場合があります。

関連ツール

このツールは他の言語でも利用できます