MiServe DevTools

あなたのステッカー

ツールをここにピン留めできます。このブラウザに保存されます。

テキスト・16 進数・2 進数・バイト列の相互変換

同じバイト列を UTF-8 テキスト、16 進数、2 進数、10 進数、8 進数、Base64 で表示します。どれかを編集すると、ほかの表示も更新されます。

バイトの区切り
2 進数の区切り単位

ブラウザ内で動作します。貼り付けた内容はアップロードされません。

このツールについて

1 つのバイト列と 6 通りの書き方

コンピューターはテキストをバイトとして保存し、1 バイトは 0 から 255 までの数です。16 進数では各バイトを 2 桁(48)、2 進数では 8 ビット(01001000)、8 進数では 3 桁(110)、10 進数ではそのままの数(72)で書きます。4 つとも同じバイトで、ASCII でも UTF-8 でも文字 H を表します。Base64 は 3 バイトごとに 4 つの印字可能な文字にまとめます。

このページの各表示は常に同じバイト列を示します。どれかに入力すると、ほかの表示が再計算されます。入力を読み取れない場合はその欄にマークが付き、ほかの欄は最後に有効だった内容のままになります。

文字とバイトは別物

テキスト表示は UTF-8 でエンコードされ、1 つのコードポイントは 1〜4 バイトになります。ASCII の英字は 1 バイト、é は 2 バイト(c3 a9)、CJK 文字の多くは 3 バイト、絵文字の多くは 4 バイト以上です。そのため、バイト数と文字数は一致しません。

ブラウザが Intl.Segmenter に対応している場合、文字数は書記素クラスタ(読み手が 1 文字と認識する単位)の数です。家族の絵文字は、複数のコードポイントをゼロ幅接合子でつないだ 1 つの書記素なので、コードポイント数もあわせて表示します。

どんなバイト列でも有効な UTF-8 になるわけではありません。無効なバイト列を入力すると、テキスト表示では無効なバイトの代わりに置換文字 U+FFFD が表示され、ツールが警告します。

入力できる形式

バイトはスペース、改行、カンマ、アンダースコアで区切れます。16 進数では、MAC アドレスのようにコロンやハイフンでも区切れます。プレフィックス 0x、\x、0b、0o も使えるので、ソースコードの配列リテラルの値を、括弧を除いてそのまま貼り付けられます。区切りのない数字は固定幅で読み取ります。1 バイトあたり 16 進数は 2 桁、2 進数は 8 ビット、8 進数は 3 桁です。

カンマやプレフィックスは常に新しい値の始まりになるため、0b1000, 0b0001 は 8 と 1 の 2 バイトです。1000 0001 のように 4 桁ずつスペースだけで区切った 2 進数は 8 ビットずつ読み取られ、1 バイトになります。

出力形式の 0x プレフィックス は、0x48, 0x65 のようなカンマ区切りのリストを出力するので、そのままコードに貼り付けられます。2 進数と 8 進数の表示も同様に 0b と 0o を使い、10 進数の表示はそのままの数を出力します。10 進数のバイト値は桁数が固定されていないため、区切りを「なし」にしてもスペースで区切られます。

よくある質問

テキストを 16 進数に変換するには?

まず各文字をバイトにエンコードし(ここでは UTF-8)、各バイトを 16 進数 2 桁で書きます。Hi という単語は 48 69 になります。最初の欄にテキストを入力し、16 進数の表示を見てください。

1 文字が複数のバイトになるのはなぜですか?

UTF-8 で 1 バイトになるのは ASCII だけです。é のようなアクセント付きの文字は 2 バイト、中国語・日本語・韓国語の文字の多くは 3 バイト、絵文字の多くは 4 バイト以上になります。

テキストに表示される � は何ですか?

置換文字 U+FFFD です。バイト列が有効な UTF-8 でない箇所に表示されます。たとえば、データがバイナリの場合や、Latin-1 や UTF-16 など別のエンコーディングで書かれている場合です。

テキストはサーバーに送信されますか?

いいえ。変換はブラウザのタブ内の JavaScript で行われます。入力した内容はどこにも送信されず、保存もされません。

エンコードのほかのツール