Pythonの組み込み関数chr()は整数を文字に変換するために使われ、関数ord()はその逆、つまり文字を整数に変換するために使われます。
この2つの関数を簡単に見て、どのように使用できるかを理解しましょう。
chr() 関数
構文
これは整数 i を受け取り、それを文字 c に変換して文字列を返す。
書式は以下の通り。
c = chr(i)
|
以下はその例です。
# Convert integer 65 to ASCII Character ('A')y = chr(65)
print(type(y), y)
# Print A-Zfor i in range(65, 65+25):
print(chr(i), end = " , ")
|
結果は以下の通りです。
<class 'str'> A
A , B , C , D , E , F , G , H , I , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z |
引数の有効範囲は 0 から 1,114,111 (16進数で 0x10FFFF) までです。
整数iがその範囲外であれば、ValueErrorが発生します。
それでは、いくつかの例で検証してみましょう。
print(chr(-1))
|
これは ValueError を発生させます。
ValueError: chr() arg not in range(0x110000)
|
start = 0
end = 1114111
try:
for i in range(start, end+2):
a = chr(i)
except ValueError:
print("ValueError for i =", i)
|
結果は以下の通りです。
ValueError for i = 1114112
|
ord() 関数
ord() 関数は、単一の Unicode 文字からなる文字列を引数に取り、その Unicode コードポイント値を整数値で返します。
これは chr() の逆を行います。
この記事もチェック:Pythonのfloat関数を使って整数や文字列を浮動小数点に変換する方法
構文
これは Unicode 文字 (長さ 1 の文字列) を 1 つ受け取り、整数を返すので、フォーマットは次のようになる。
i = ord(c)
|
この関数が chr() の逆を行うことを確認するために、いくつかの例を使ってこの関数をテストしてみましょう。
# Convert ASCII Unicode Character 'A' to 65y = ord('A')
print(type(y), y)
alphabet_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# Print 65-90for i in alphabet_list:
print(ord(i), end = " , ")
|
結果は以下の通りです。
<class 'int'> 65
65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 ,
|
これは、入力文字列の長さが1でない場合、TypeErrorを発生させる。
y = ord('Hi')
|
結果は以下の通りです。
TypeError: ord() expected a character, but string of length 2 found
|
この記事もチェック:Pythonの文字列フォーマット|f文字列やformat関数等での使い方
16進数データの受け渡し
chr() や ord() では、16進数のような他の一般的なベースで表現された整数を渡すこともできます。
Python では、整数の 32/64 ビットの範囲内であれば、整数の前に 0x を付けることで16進数を使用することができます。
>>> print(hex(18))
'0x12'>>> print(chr(0x12))
'x12'>>> print(ord('x12'))
18>>> print(int('x12'))
18 |
16進数の整数値 18 を chr() に渡すと、16進数の 0x12 が返されます。
これを chr() に渡し、 ord() を使って整数を返します。
1 文字の文字列も文字列なので、 int() を使っても整数を得ることができることに注意してください。
この記事もチェック:Pythonの文字列を整数(int)に、整数を文字列に変換する方法
まとめ
この記事では、chr() と ord() を使って、整数を文字に変換したり、逆に文字を文字に変換したりする方法を学びました。