1. ASCIIコードとは?
1.1 基本概念
ASCIIコード(アスキーコード)は、コンピュータが文字を扱うための最も基本的な「約束事」です。例えば、私たちが「A」という文字を入力すると、コンピュータ内部では「65」(16進数では41)という数値として処理されます。これは、ちょうど暗号表のように、「文字」と「数値」を対応させる仕組みです。
1.2 なぜASCIIコードが必要なのか?
コンピュータは内部ではすべてを2進数(0と1)で処理します。例えば:
- キーボードで「A」を入力 → コンピュータは「65」(01000001)として認識
- プログラムで処理 → 画面に「A」として表示
この「翻訳表」としてのASCIIコードがなければ、文字の取り扱いが統一されず、コンピュータ間での文字のやり取りができません。
2. ASCIIコードの構造
2.1 基本構成
- 7ビットで表現(0-127までの数値)
- 大きく3つのグループに分類:
- 制御文字(0-31):目に見えない特殊な命令
- 印字可能文字(32-126):画面に表示できる文字
- 削除文字(127):特殊な制御文字
2.2 重要な規則性
大文字のA (65, 0x41)
小文字のa (97, 0x61)
→ 32(0x20)の差がある
これは1例ですが、このような規則性を覚えておくと、プログラミングで役立ちます。
3. 実践的な活用例
3.1 文字の大文字・小文字変換
# Pythonでの例
def to_upper(char):
ascii_code = ord(char) # 文字をASCIIコードに変換
if 97 <= ascii_code <= 122: # 小文字の範囲
return chr(ascii_code - 32) # 32を引いて大文字に
return char
print(to_upper('a')) # 出力: A
3.2 文字列の入力チェック
// JavaScriptでの例
function isAlphanumeric(str) {
return str.split('').every(char => {
let code = char.charCodeAt(0);
return (
(48 <= code && code <= 57) || // 数字
(65 <= code && code <= 90) || // 大文字
(97 <= code && code <= 122) // 小文字
);
});
}
3.3 よく使う制御文字
- 改行文字(LF: 10, CR: 13)
# Windowsとの互換性を考慮した改行
text = "Hello\r\nWorld" # \r\n = CR+LF
- 空白文字(Space: 32, Tab: 9)
# インデントの処理
indent = "\t" # タブ文字(ASCII: 9)
4. 実務でよく遭遇する場面
4.1 文字化けのデバッグ
# 文字列の内容を16進数で確認
def debug_string(text):
return ' '.join(hex(ord(c))[2:] for c in text)
print(debug_string("Hello")) # 48 65 6c 6c 6f
4.2 ファイル処理での注意点
- テキストファイルの改行コード
- バイナリファイルの先頭への制御文字の混入
- CSVファイルでの区切り文字の扱い
コード表例
コード表例ではHEX表示を横軸が上位、縦軸が下位となります。HEXの41は横軸0x4_で縦軸_x1となり’A’を指しています。同様に5Aであれば’Z’を、3Fであれば’?’を指します。
ASCII コードマトリックス表
横軸は上位3ビット(0-7)、縦軸は下位4ビット(0-15)を表します。
各セルには文字とそのコードが表示されています。
各セルには文字とそのコードが表示されています。
000 0x0_ |
001 0x1_ |
010 0x2_ |
011 0x3_ |
100 0x4_ |
101 0x5_ |
110 0x6_ |
111 0x7_ |
|
---|---|---|---|---|---|---|---|---|
0000 _x0 |
NUL 00 |
DLE 10 |
SP 20 |
0 30 |
@ 40 |
P 50 |
` 60 |
p 70 |
0001 _x1 |
SOH 01 |
DC1 11 |
! 21 |
1 31 |
A 41 |
Q 51 |
a 61 |
q 71 |
0010 _x2 |
STX 02 |
DC2 12 |
“ 22 |
2 32 |
B 42 |
R 52 |
b 62 |
r 72 |
0011 _x3 |
ETX 03 |
DC3 13 |
# 23 |
3 33 |
C 43 |
S 53 |
c 63 |
s 73 |
0100 _x4 |
EOT 04 |
DC4 14 |
$ 24 |
4 34 |
D 44 |
T 54 |
d 64 |
t 74 |
0101 _x5 |
ENQ 05 |
NAK 15 |
% 25 |
5 35 |
E 45 |
U 55 |
e 65 |
u 75 |
0110 _x6 |
ACK 06 |
SYN 16 |
& 26 |
6 36 |
F 46 |
V 56 |
f 66 |
v 76 |
0111 _x7 |
BEL 07 |
ETB 17 |
‘ 27 |
7 37 |
G 47 |
W 57 |
g 67 |
w 77 |
1000 _x8 |
BS 08 |
CAN 18 |
( 28 |
8 38 |
H 48 |
X 58 |
h 68 |
x 78 |
1001 _x9 |
HT 09 |
EM 19 |
) 29 |
9 39 |
I 49 |
Y 59 |
i 69 |
y 79 |
1010 _xA |
LF 0A |
SUB 1A |
* 2A |
: 3A |
J 4A |
Z 5A |
j 6A |
z 7A |
1011 _xB |
VT 0B |
ESC 1B |
+ 2B |
; 3B |
K 4B |
[ 5B |
k 6B |
{ 7B |
1100 _xC |
FF 0C |
FS 1C |
, 2C |
< 3C |
L 4C |
\ 5C |
l 6C |
| 7C |
1101 _xD |
CR 0D |
GS 1D |
– 2D |
= 3D |
M 4D |
] 5D |
m 6D |
} 7D |
1110 _xE |
SO 0E |
RS 1E |
. 2E |
> 3E |
N 4E |
^ 5E |
n 6E |
~ 7E |
1111 _xF |
SI 0F |
US 1F |
/ 2F |
? 3F |
O 4F |
_ 5F |
o 6F |
DEL 7F |
凡例:
- 淡いオレンジ色のセル – 制御文字
- 白色のセル – 印字可能文字
- 各セルの下の数字は16進数表記
参照
- ASCII – Wikipedia(日本語)