Python 組み込み関数 chr()
と ord()
🔡 chr()
:整数(Unicodeコード)→ 文字
-
構文:
chr(i)
-
引数:整数(Unicodeコードポイント)
-
戻り値:そのコードに対応する文字(
str
型) -
範囲:0〜1,114,111(0x10FFFF)
-
例:
chr(97) # 'a' chr(65) # 'A' chr(124) # '|'
🔢 ord()
:文字 → 整数(Unicodeコード)
-
構文:
ord(c)
-
引数:1文字の文字列(
str
型) -
戻り値:その文字のUnicodeコードポイント(
int
型) -
例:
ord('a') # 97 ord('A') # 65 ord('|') # 124 ord('あ') # 12354(U+3042)
🧠 ASCII との関係
-
ASCII は Unicode の最初の 128 文字(0〜127)を含む。
-
例えば:
-
ord('a')
は ASCII コード 97 -
chr(97)
は 'a'
-
🔄 他のエンコーディング(UTF-8やShift_JISなど)について
-
chr()
やord()
は Unicode専用 であり、UTF-8やShift_JISなどのバイトエンコーディングとは直接関係ありません。 - 他のエンコーディングを扱いたい場合は、次のように
encode()
/decode()
を使用します:
🔸 文字列 → バイト列
'あ'.encode('utf-8') # b'\xe3\x81\x82'
'あ'.encode('shift_jis') # b'\x82\xa0'
🔸 バイト列 → 文字列
b'\xe3\x81\x82'.decode('utf-8') # 'あ'
b'\x82\xa0'.decode('shift_jis') # 'あ'
デフォルトエンコーディングの確認
import sys
print(sys.getdefaultencoding()) # 通常は 'utf-8'
- Python 3 では
str
型は常に Unicode を前提としています。
🎯 よくある用途
1. アルファベット列を生成
for i in range(26):
print(chr(ord('a') + i), end=' ') # a b c ... z
2. シーザー暗号(Caesar Cipher)などの暗号処理
- アルファベット → 数値 → シフト → 文字に戻す、という処理で使う
3. 英字ラベルの自動生成
label = chr(ord('A') + 3) # 'D'
✅ まとめ表
関数 | 説明 | 例 |
---|---|---|
ord() |
文字 → Unicode(int) |
ord('a') → 97 |
chr() |
Unicode(int) → 文字 |
chr(97) → 'a' |
Pythonで文字と数値を相互に変換する際には、chr()
とord()
の活用が非常に便利です。バイト列や他の文字コードを扱いたい場合は encode()
/ decode()
を使い分けましょう。