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-Z for 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 65 y = ord ( 'A' )
print ( type (y), y)
alphabet_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# Print 65-90 for 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()
を使って、整数を文字に変換したり、逆に文字を文字に変換したりする方法を学びました。