ASCII(アスキー)コード表
みなさんがお使いのパソコンには、ASCIIコード表というものが入っています。
ASCIIは、「アスキー」と読みます。
かつてASCIIというコンピュータ専門誌(今はネット上に存在ascii.jp)がありましたが、ここからきていると思います。
| 番号 | 16進表記番号 | 文字 |
|---|---|---|
| 0 | 0x00 | NUL(null文字) |
| 1 | 0x01 | SOH(ヘッダ開始) |
| 2 | 0x02 | STX(テキスト開始) |
| 3 | 0x03 | ETX(テキスト終了) |
| 4 | 0x04 | EOT(転送終了) |
| 5 | 0x05 | ENQ(照会) |
| 6 | 0x06 | ACK(受信OK) |
| 7 | 0x07 | BEL(警告) |
| 8 | 0x08 | BS(後退) |
| 9 | 0x09 | HT(水平タブ) |
| 10 | 0x0a | LF(改行) |
| 11 | 0x0b | VT(垂直タブ) |
| 12 | 0x0c | FF(改頁) |
| 13 | 0x0d | CR(復帰) |
| 14 | 0x0e | SO(シフトアウト) |
| 15 | 0x0f | SI(シフトイン) |
| 16 | 0x10 | DLE(データリンクエスケープ) |
| 17 | 0x11 | DC1(装置制御1) |
| 18 | 0x12 | DC2(装置制御2) |
| 19 | 0x13 | DC3(装置制御3) |
| 20 | 0x14 | DC4(装置制御4) |
| 21 | 0x15 | NAK(受信失敗) |
| 22 | 0x16 | SYN(同期) |
| 23 | 0x17 | ETB(転送ブロック終了) |
| 24 | 0x18 | CAN(とりけし) |
| 25 | 0x19 | EM(メディア終了) |
| 26 | 0x1a | SUB(置換) |
| 27 | 0x1b | ESC(エスケープ) |
| 28 | 0x1c | FS(フォーム区切り) |
| 29 | 0x1d | GS(グループ区切り) |
| 30 | 0x1e | RS(レコード区切り) |
| 31 | 0x1f | US(ユニット区切り) |
| 32 | 0x20 | (スペース) |
| 33 | 0x21 | ! |
| 34 | 0x22 | “ |
| 35 | 0x23 | # |
| 36 | 0x24 | $ |
| 37 | 0x25 | % |
| 38 | 0x26 | & |
| 39 | 0x27 | ‘ |
| 40 | 0x28 | ( |
| 41 | 0x29 | ) |
| 42 | 0x2a | * |
| 43 | 0x2b | + |
| 44 | 0x2c | , |
| 45 | 0x2d | – |
| 46 | 0x2e | . |
| 47 | 0x2f | / |
| 48 | 0x30 | 0 |
| 49 | 0x31 | 1 |
| 50 | 0x32 | 2 |
| 51 | 0x33 | 3 |
| 52 | 0x34 | 4 |
| 53 | 0x35 | 5 |
| 54 | 0x36 | 6 |
| 55 | 0x37 | 7 |
| 56 | 0x38 | 8 |
| 57 | 0x39 | 9 |
| 58 | 0x3a | : |
| 59 | 0x3b | ; |
| 60 | 0x3c | < |
| 61 | 0x3d | = |
| 62 | 0x3e | > |
| 63 | 0x3f | ? |
| 64 | 0x40 | @ |
| 65 | 0x41 | A |
| 66 | 0x42 | B |
| 67 | 0x43 | C |
| 68 | 0x44 | D |
| 69 | 0x45 | E |
| 70 | 0x46 | F |
| 71 | 0x47 | G |
| 72 | 0x48 | H |
| 73 | 0x49 | I |
| 74 | 0x4a | J |
| 75 | 0x4b | K |
| 76 | 0x4c | L |
| 77 | 0x4d | M |
| 78 | 0x4e | N |
| 79 | 0x4f | O |
| 80 | 0x50 | P |
| 81 | 0x51 | Q |
| 82 | 0x52 | R |
| 83 | 0x53 | S |
| 84 | 0x54 | T |
| 85 | 0x55 | U |
| 86 | 0x56 | V |
| 87 | 0x57 | W |
| 88 | 0x58 | X |
| 89 | 0x59 | Y |
| 90 | 0x5a | Z |
| 91 | 0x5b | [ |
| 92 | 0x5c | \ |
| 93 | 0x5d | ] |
| 94 | 0x5e | ^ |
| 95 | 0x5f | _ |
| 96 | 0x60 | ` |
| 97 | 0x61 | a |
| 98 | 0x62 | b |
| 99 | 0x63 | c |
| 100 | 0x64 | d |
| 101 | 0x65 | e |
| 102 | 0x66 | f |
| 103 | 0x67 | g |
| 104 | 0x68 | h |
| 105 | 0x69 | i |
| 106 | 0x6a | j |
| 107 | 0x6b | k |
| 108 | 0x6c | l |
| 109 | 0x6d | m |
| 110 | 0x6e | n |
| 111 | 0x6f | o |
| 112 | 0x70 | p |
| 113 | 0x71 | q |
| 114 | 0x72 | r |
| 115 | 0x73 | s |
| 116 | 0x74 | t |
| 117 | 0x75 | u |
| 118 | 0x76 | v |
| 119 | 0x77 | w |
| 120 | 0x78 | x |
| 121 | 0x79 | y |
| 122 | 0x7a | z |
| 123 | 0x7b | { |
| 124 | 0x7c | | |
| 125 | 0x7d | } |
| 126 | 0x7e | ~ |
| 127 | 0x7f | DEL(削除) |
ASCIIコード表についての詳しい説明
しかし、人間は文字を通して情報を理解するため、コンピュータが画面に文字を表示したりするときなど、その文字を特定するために2進数を対応させた表を作った。
この数値に対応した文字の一覧表がASCIIコード表である。
ですからアルファベットを扱う表を作る必要があったわけです。
例えばキーボードの「A」を押したときにコンピュータがASCIIコード表を参照するイメージを示します。

コンピュータ自体は、2進数(0と1の情報)で動作しているため人から見て分かりやすくしたのがASCIIコード表と言えます。
ASCIIコード表自体も人間が見るための表であるため、2進数の番号ではなく、10進数の番号が振ってある表になっています。
文字には目に見える文字と目に見えない文字がある
ASCIIコード表を知る上で大事なことは、文字には目に見える文字(「A」とか「6」とかの通常の文字)と見えない文字、(「改行」や「スペース文字」「タブ文字」など)が存在するという事です。
見えない文字を制御文字と呼びます。何か機能を持った文字という意味です。
制御文字は、便宜上「\」マークをつけて表します。日本のパソコンでは、半角の「¥」マークをつけて表しています。
ちなみに見える文字と見えない文字をASCIIコード表の番号で言うと
| 見える文字 | 32~126番(32番半角スペース含む) |
| 見えない文字 | 0~31番, 127番 |
となります。
その他の文字コード
理由は、ASCIIコードと互換性があるため
現在は、世界各国でパソコンやスマホが使われるようになり扱う文字も多種多様になりました。
当然ASCIIコードだけでは賄うことはできません。日本や中国で使う漢字、ハングル文字、アラビア文字なども含めた多様な文字に対応した文字コードも存在します。
現在、Webサイトやプログラミングの世界ではUTF-8という文字コード形式が最も普及しています。
理由はASCIIコードと互換性がある、ということが挙げられます。
そのほか日本独自で発展したJISコードやShift-JISコード、Unix系のコンピュータで普及しているEUCコードなどがあります。
ASCIIコードを使ったプログラム
ASCIIコード表の見える文字だけ出力する
22ascii.c
/* ascii.c: ASCIIコード表の見える文字だけ出力 */
#include <stdio.h>
int main(void)
{
int i;
/* 32番から126番目の文字を出力する */
for(i=32; i<=126; i++)
printf("%c", i);
return 0;
}
実行結果(先頭が半角スペースのため1文字空いている)
!” #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
単純にfor文を使って32から126までカウントしています。
printf関数の書式指定子に「%c」を指定するとその数字に対応したASCIIコード文字を表示してくれます。
数字に対応したASCIIコード文字を出力する
printf関数の書式指定子に「%c」を指定するとその数字に対応したASCIIコード文字を表示する機能を使います。
ascii_1.c
/* ascii_1.c: 数字に対応したASCIIコード文字を出力する */
#include <stdio.h>
int main(void)
{
int c = 65;
printf("%c", c);
return 0;
}
とすると結果は
A
と表示されます。ASCIIコード表の65番目の文字が「A」だからです。
文字に対応したASCIIコード番号を出力する
例えばprintf関数でよく使う改行文字「\n」ですが、これを数値として表示するプログラムを作成してみます。
C言語で文字は、シングルクォーテーションでくくります。これは一見文字のようにみえますが、中身はASCIIコード番号の数値です。
例えばint c =’A’; は、c = 65; と同じです。
ascii_2.c
/* ascii_2.c: 文字に対応したASCIIコード番号を出力する */
#include <stdio.h>
int main(void)
{
int c = '\n';
printf("%d", c);
return 0;
}
実行結果
10
と表示されました。わたしの環境(Windows10)では改行の文字コード番号は「10」でした。
改行文字のコードはお使いの環境によって変わるので違う数値になる場合があります。
おまけ:印刷用ASCIIコード表(PDF版、Excel版)
わたしが授業で使っているASCIIコード表です。
A4印刷用に作りました。ご自由にお使い下さい。
Excel版(Excel97形式:~.xls)
ascii_code.zip


コメント