100% ローカル — データがブラウザの外に出ることはありません

テキストを16進数に変換|かくれた文字まで目に見える形にする

テキストをUTF-8のバイト列として、空白区切りの16進数で表示します。バイト数が思っていたのと違うこと、その一バイトが答えそのものであることは、よくあります。

高速 プライベート Cookieゼロ

Text 入力

Hex 出力

このツールの動作

テキストを UTF-8 として符号化し、得られた各バイトを小文字の16進数で、空白区切りで出力します。

区切るのは意図した設計です。数字が連なると読みにくく、数え間違えやすい一方で、16進数を眺める目的はまさに数えることだからです。

文字ではなくバイト

ここが驚かれる部分であり、このツールが役立つ理由でもあります。

hi      →  68 69              2バイト、2文字
café    →  63 61 66 c3 a9     5バイト、4文字
😀      →  f0 9f 98 80        4バイト、1文字

UTF-8 は可変長です。ASCII の文字は1バイト、アクセント付きのラテン文字は2バイト、多くの CJK 文字は3バイト、絵文字は4バイトを要します。データベースの列、プロトコルの欄、ファイル形式が n バイトまでと定めているなら、意味を持つのはこちらの数であって、エディタが表示する数ではありません。

見えるようになるもの

描画されないものすべてです。末尾の改行は 0a。Windows の改行は 0d 0a で、1バイトのつもりが2バイトです。見た目が空白と区別できないノーブレークスペースは c2 a0。ファイル先頭のバイト順マークは ef bb bf。

これらはどれも、どこかで比較や解析やインポートを壊したことがあり、そしてどれもテキスト欄には映りません。

16進数から読み戻す

逆方向は空白と大文字を受け付けます。16進ダンプ、デバッガ、ログの出力をそのまま貼り付けられ、事前に整える必要はありません。

桁数が奇数の場合は、推測せずにエラーとします。1バイトは2桁であり、どちら側が欠けたのかを知る手立てがないからです。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

4文字の単語が5バイトと表示されるのはなぜですか。
UTF-8 が可変長だからです。ASCII の文字は1バイト、アクセント付きの文字は2バイト、多くの CJK 文字は3バイト、絵文字は4バイトを占めます。このツールが示すのはバイトなので、文字数とは食い違います。
空白や大文字を含む16進数を貼り付けてもよいですか。
どちらも構いません。空白は無視され、`4A` は `4a` と同じに読まれます。拒否されるのは桁数が奇数の場合です。1バイトは2桁であり、どちら側が欠けているかを推測するのは、そう告げるより悪い対応だからです。
デバッグにどう役立ちますか。
見えないものを見えるようにするからです。末尾の改行、ノーブレークスペース、バイト順マーク、Windows の改行。どれもテキスト欄には現れませんが、ここにはすべて現れます。

関連ツール