ASCII表リファレンス

英語で入力する印字可能文字はすべて、7ビットASCII標準では32から126の数値に対応します。32未満と127には、LF、CR、ESC、DELなどの制御コードがあり、シリアルプロトコルのデバッグや改行修正では今でも重要です。このリファレンス表は、0から127までのすべてのコードポイントを、10進数、16進数、8進数、2進数、HTML実体参照の形式と並べて示します。

ASCII表の使い方

  1. 1

    必要な文字の行を探す

    文字、記号、code-point名で探します。制御コードは3文字のmnemonicで並んでいます。

  2. 2

    必要なエンコーディングを横に読む

    人間に読みやすいコードなら10進数、ソースコードなら16進数、プロトコル作業なら2進数、マークアップならHTML実体参照を使います。

  3. 3

    任意のセルをコピー

    hex dumpやbyte sequenceを渡され、それが何を表すか知る必要があるときに便利です。

ASCIIの3つの範囲

範囲 10進数 内容
制御 0-31, 127 NUL、BEL、BS、HT、LF、VT、FF、CR、ESC、DEL ほか
印字可能 32-126 スペース、約物、数字、A-Z、a-z
拡張(非ASCII) 128+ エンコーディングに依存。ASCIIは厳密には127で終わる

今でも重要な制御コード

  • 0x00 NUL - Cでの文字列終端、一部バイナリ形式でのpadding。
  • 0x07 BEL - ターミナルベルを鳴らします。
  • 0x08 BS - Backspace。
  • 0x09 HT - Horizontal tab。
  • 0x0A LF - Line feed、Unixのnewline。
  • 0x0D CR - Carriage return。WindowsではLFと組み合わせてCRLFになります。
  • 0x1B ESC - ターミナル色のANSI escape sequenceを開始します。
  • 0x7F DEL - もともとは紙テープの穴を打ち抜くコード。現在はあまり使われません。

ASCII vs Unicode

Unicodeは最初の128コードポイントにASCIIの128文字をそのまま収録し、UTF-8もそれらをASCIIと同じバイトで表します。ただし、ASCIIがすべての文字コードに含まれるわけではありません。たとえばEBCDICでは、英字や数字に異なる値が割り当てられています。

よくある変換

  • 10進数から16進数: 65(10進数) = 0x41 = A
  • 16進数から2進数: 0x41 = 0100 0001
  • 16進数からHTML実体参照: AまたはAはいずれもAとして表示されます。

よくある質問

ASCIIは7-bitコードで、byteの8番目のbitをパリティや拡張用に残していたからです。128-255の値は“extended ASCII“の変種(Latin-1、Windows-1252、MacRomanなど)の領域です。互いに互換性がなく、それがUnicodeが勝った理由の一部です。

LF(0x0A)は1行下へ移動します。CR(0x0D)はカーソルを列0へ戻します。UnixのnewlineはLFだけ、古典的MacではCRだけ、WindowsとHTTPヘッダーではCRに続いてLF(CRLF)です。不一致は、システム間で二重改行や詰まった表示になる典型原因です。

ASCIIでは、大文字と小文字を区別する位置にビット0x20が来るよう配置されています。ただし、0x20とのXORが安全なのは、そのバイトがASCII英字だと確認した後だけです。任意のバイトへ無条件に適用すると、数字、句読点、制御値まで変化します。

はい。テキストファイルのLFとCR、ソースコードやターミナルのHTとFF、ANSI色シーケンスのESC、ターミナルベルやアラートのBELがあります。NULは今でもC文字列を終端します。残りの多くはテレタイプ時代のlegacyです。

関連ツール