何ができるか
このツールは、テキストの裏にあるバイトを表示し、バイト列をテキストに戻します。単語を入力すると、2 進数(01001000 01101001)、16 進数(48 69)、10 進数(72 105)、8 進数(110 151)で表示されます。パケットダンプやデバッガー、課題の問題から取ったバイト列を貼り付ければ、テキストとして読み直せます。
すべての変換は UTF-8 を経由するので、単純な ASCII だけでなく、あらゆる言語や絵文字にも使えます。你好 がなぜ 6 バイトなのか、絵文字がなぜデータベースのカラムで 4 バイトと数えられるのかが一目でわかります。
使い方
- エンコードするなら テキスト → バイト、デコードするなら バイト → テキスト を選びます。
- 数値の形式を 2 進数、16 進数、10 進数、8 進数から選びます。
- エンコード時は、バイト間の区切り文字(スペース、なし、カンマ、改行)と、16 進数の英字を大文字にするかどうかを選びます。
- 入力を入力または貼り付けます。結果は入力に合わせて更新され、コピーやダウンロードができます。
デコードのルール
デコード時のツールは、レイアウトに寛容です。
- バイトはスペース、カンマ、セミコロン、改行のどれで区切っても、混在していてもかまいません。
- 一般的な接頭辞は取り除かれます。16 進数の
0x、\x、%、2 進数の0b、8 進数の0oや\です。 - 区切りのない長い連続は固定幅のバイトに分割されます。2 進数は 8 桁、16 進数は 2 桁、8 進数と 10 進数は 3 桁です。
- 255 を超える値や、その形式に属さない数字は、行と列付きで報告されます。
例
Hi 你好 を 2 進数にエンコードすると 9 バイトになります。Hi が 2 バイト、スペースが 1 バイト、中国語の文字がそれぞれ 3 バイトです。同じテキストを 16 進数にすると 48 69 20 e4 bd a0 e5 a5 bd となり、これはバイナリエディターで見えるもの、そして URL では %E4%BD%A0 として現れるものとまったく同じです。
役に立つ場面
開発者は、テキストがディスクにどう保存されるか、ネットワークでどう送られるかを確認したり、バイト数と文字数で文字列の長さを比べたり、文字化けをデバッグしたりするのに使います。学生は、2 進数や 16 進数を手で計算する練習をして、答え合わせをするのに使います。
よくある質問
› どの文字コードを使っていますか?
ウェブの標準である UTF-8 です。ASCII 文字は 1 文字 1 バイト、アクセント付きの文字はたいてい 2 バイト、日本語・中国語・韓国語の文字は 3 バイト、絵文字は 4 バイトです。
› 0x や \x の接頭辞付きのバイト列を貼り付けられますか?
はい。デコード時には、16 進数の 0x、\x、%、2 進数の 0b、8 進数の 0o といった接頭辞が取り除かれ、スペース、カンマ、セミコロン、改行はすべて区切り文字として扱われます。
› バイト列が有効な UTF-8 ではないというエラーが出るのはなぜですか?
単独の FF バイトや途中で切れたマルチバイト文字のように、UTF-8 のテキストには現れないバイト列があるからです。すべてのバイトをコピーしたか、正しい形式を選んだかを確認してください。
› テキストはアップロードされますか?
いいえ。エンコードもデコードもブラウザ内で行われます。