今回は、ord関数やchr関数などの、Pythonの組み込み関数を用いて、ASCIIコードやUnicodeに対応する数値と文字列を自由に変換する方法を解説します。
ord関数やchr関数を用いて文字列や数字を扱うためには、ASCIIコードやUnicodeの知識が必要になります。本記事を読むことによってそれらをしっかりと使い分けることができるでしょう!
ほかの記事では、ord関数の逆、つまり、Unicode値から文字に変換する方法も解説していますので参考にしてください。
参考:Pythonのord関数(組み込み関数)を解説!複数文字の処理やordの逆も解説!
コンテンツ
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
ASCIIコードとは
ASCIIコードとは、日本語を除いた記号やアルファベットの対応を一覧にしたものをいいます。
コンピュータは「0」か「1」の2進数しか扱えません。しかし、本記事を読んでわかるように、日本語や英数字といった様々な文字が画面に表現されています。
これは、2進数で示されたある特定の数字が、それに対応する文字をコンピュータ上で表現しているからです。
この数字と文字の対応を文字コードといい、現代のコンピュータではどの数字とどの文字とを、対応付けるかを決定された文字コードの一つがASCIIコードです。
過去にはASCIIコードを用いた暗号文の作成や、暗号学的に強いパスワードの生成方法を解説していますのでよろしければ参考にしてみてください!
参考:【Python】乱数を使って適当な暗号文を作成する方法(復号化不可)
参考:【Python】secretsモジュールを用いたパスワードの作成
Unicodeとは
Unicodeとは、ASCIIコード同様に、文字と数字との対応表(大規模文字セット)のことです。
ASCIIコードとの違いは、数字と文字とが対応されている数が大きく異なるという点です。英語や日本語だけではなく、韓国語や、見たことないような文字も含まれているので、どんな感じか見てみるとわかると思います。
ord関数について
ここからはPythonのお話しです!
ASCIIコードによって割り振られている特定の数字を確認するためには「ord」関数を用います。
1 2 3 4 5 6 7 8 9 10 11 12 |
print(ord("A")) # 65 print(ord("B")) # 66 print(ord("ぁ")) # 12353 print(ord("あ")) # 12354 print(ord("い")) # 12356 |
なぜ「ord(“A”)」が65になるのかは、先ほどのASCIIコードやUnicodeを確認するとわかると思います。
1 2 3 4 5 6 7 8 9 10 11 12 |
Str = "Bird" for c in Str: print(ord(c)) """ 66 105 114 100 """ |
文字列に対してもサンプルのように一文字ずつord関数を用いると、振り分けられている番号を確認することができ便利です。
chr関数について
特定の数字に対応する文字を確認するためには「chr」関数を用います。
1 2 3 4 5 6 7 8 9 10 |
print(chr(65)) # A print(chr(66)) # B print(chr(12353)) # ぁ print(chr(12354)) # あ |
数字についても確認しよう!
1 2 3 4 5 6 7 8 9 |
a = chr(49) print(a) # 1 print(type(a)) # <class 'str'> print(a + a) # 11 |
ここで気を付けたいのは、見た目は数字ですが、文字コードでは文字列として扱われるということです。
数値として使いたい場合には型のキャスト(変換)を行いましょう。
ASCIIコード表を作ってみよう
ソースコード
今回は、「for」文を用いてループをするだけのコードです。
出力結果をすべて掲載するわけにはいかないので、英数字に限り表でまとめました。
1 2 3 |
for i in range(128): print(i, hex(i), chr(i)) |
コンソールなどに文字が印字されない箇所があると思いますが、そこにはコンピュータ上で識別される制御文字や識別子が対応しています。
数字
10進数 | 16進数 | ASCII |
---|---|---|
48 | 0x30 | 0 |
49 | 0x31 | 1 |
50 | 0x32 | 2 |
51 | 0x33 | 3 |
52 | 0x34 | 4 |
53 | 0x35 | 5 |
54 | 0x36 | 6 |
55 | 0x37 | 7 |
56 | 0x38 | 8 |
57 | 0x39 | 9 |
大文字のアルファベット
10進数 | 16進数 | ASCII |
---|---|---|
65 | 0x41 | A |
省略 | 省略 | 省略 |
90 | 0x5a | Z |
一部省略しています。
小文字のアルファベット
10進数 | 16進数 | ASCII |
---|---|---|
97 | 0x61 | a |
省略 | 省略 | 省略 |
122 | 0x7a | z |
最初の表を見ればすべて確認できます。
まとめ
最後まで読んでいただきありがとうございます!
今回は、Pythonでord関数やchr関数などを用いて、ASCIIコードやUnicodeによる数値と文字列を自由に変換する方法を解説しました。
参考:Pythonのord関数(組み込み関数)を解説!複数文字の処理やordの逆も解説!
それぞれの関数の使い方や、コンピュータ上で扱われているASCIIコードについて少しでも理解していただけたのなら幸いです。
過去にはASCIIコードを用いた暗号文の作成や暗号学的に強いパスワードの生成方法を解説していますのでよろしければ参考にしてみてください!
参考:【Python】乱数を使って適当な暗号文を作成する方法(復号化不可)
参考:【Python】secretsモジュールを用いたパスワードの作成
無料の説明会を有効活用しよう!
独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。
それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。