ASCIIからテキストへの変換ツール

72 101 108 108 111のような文字列を与えると、この変換ツールは各数値をASCIIコードとして読み取り、それが綴るテキストを返します。この例ならHelloです。入力から基数(10進数・16進数・2進数)を自動判別し、一般的な区切り文字を許容し、0x\x#の接頭辞を取り除くため、Cソースファイル・16進ダンプ・CTFの問題からコードをそのまま貼り付けても、事前に整える必要がありません。

変換ツールが入力を読み取る仕組み

  1. 1

    ASCIIコードを貼り付ける

    空白・カンマ・セミコロン・改行で区切れます。各コードが固定幅なら区切り文字なしでも使えます。

  2. 2

    基数を選ぶか自動判別する

    0〜127の数値は10進数、2桁のペアは16進数、8ビットのまとまりは2進数です。

  3. 3

    各コードが1文字になる

    コード65は`A`、0x61は`a`、00100000は空白です。

  4. 4

    デコードされたテキストを読む

    非表示コード(NUL・BEL・DEL)は角括弧の中に略号で表示されます。

変換ツールが理解できる入力形式

入力例 基数
72 101 108 108 111 10進数
72,101,108,108,111 10進数
48 65 6C 6C 6F 16進数
0x48 0x65 0x6C 0x6C 0x6F 16進数
\x48\x65\x6C\x6C\x6F 16進数(Cのエスケープ)
48656C6C6F 16進数(区切りなし)
01001000 01100101 01101100 01101100 01101111 2進数

制御コードの扱い

ASCIIの0〜31と127は非表示文字です。用途に応じて、変換ツールはそれらを生のバイトとして出力する(プロトコル文字列の構築に便利)か、山括弧の中の略号に置き換えます: <LF><CR><TAB><NUL><DEL>

ASCIIを超える場合

コードが127を超えるなら、厳密にはASCIIではありません。よくあるのは次の2つです。

  • Latin-1 / Windows-1252 — 1文字あたり1バイトで、128〜255の値がアクセント付き文字を表します。
  • UTF-8 — 複数バイトで、後続バイトは10xxxxxxで始まります。C3 A9のようなコード列は\u00e9にデコードされます。

変換ツールは既定で127を超える入力をUTF-8のバイトとして扱います。これで現代のテキストのほとんどをカバーできます。

逆方向の変換

テキストからコードへ変換するには、対になるツールをお使いください: 「テキストからASCIIへ」「テキストから2進数へ」「テキストから16進数へ」。

よくある質問

各コードが固定幅なら動きます。2進数は8ビット、16進数は2桁です。10進数はコードが1〜3桁で、区切り文字なしでは確実に分割できないため区切り文字が必要です。

入力内の一部のコードが127を超えており、不正なUTF-8のバイト列になっている可能性があります。元データが古いテキストファイルやWindowsシステムのダンプなら、Latin-1としてデコードしてみてください。

はい。Cスタイルのエスケープ(\x48)、Cのリテラル(0x48)、URLのパーセントエンコーディング(%48)、アセンブリの接頭辞($48)は、解析の前にすべて取り除かれます。

127を超えるコードは有効なバイトではありますがASCIIではありません。255を超えるコードは1バイトに収まりません。変換ツールは推測せず、それらに印を付けて読み飛ばします。

関連ツール