コンピュータで最も基本的な文字コードは次の表のような ASCII コードで,大小のアルファベット,数字,いくつかの記号と制御文字が割り当てられています.
上の表から,例えば,2 進数の「0100 0001」(16進数で「0x41」)には「A」という文字が割り当てられています.つまり,「A」という文字はコンピュータ内部では「0100 0001」という 2 進数として処理されています.
ある文字から ASCIIコード に変換するには ord()
を使います.例えば,「A」から ASCII コードに変換すると 10 進数の 65 となります.
s = 'A'
ord(s)
65
「A」の ASCII コードを 16 進数で表示すると確かに「0x41」になりました.
s = 'A'
hex(ord(s))
'0x41'
小文字の「a」は「0x61」になります.
s = 'a'
hex(ord(s))
'0x61'
また,文字コードから文字に変換するには chr()
関数を使います.
chr(0x6A)
'j'
上の「A」と「a」の ASCII コードを比較すると,大文字の ASCII コードに 32 を加えると小文字に変換できることがわかります.
s = 'G'
chr(ord(s) + 32)
'g'
ASCII コード表では 2 列右にずらすと,大文字から小文字になっています.例えば「0x41」を「0x61」に変換すると「A」から「a」になります.つまり,16進数の世界で 0x20 を加えるとやはり小文字に変換できます.
s = 'V'
chr(ord(s) + 0x20)
'v'
小文字から大文字の変換は逆の操作をするだけです.
s = 'x'
chr(ord(s) - 32)
'X'
s = 'x'
chr(ord(s) - 0x20)
'X'
文字コードに 32 以外の値を加算・減算すると別の文字に置き換えることができます.この操作でシンプルなシーザー暗号なども実現できます.