【Python】2,8,10,16進数の表記と変換方法

プログラム
スポンサーリンク

はじめに

今回はPythonの2,8,10,16進数の表記と変換方法を紹介します。
Pythonの導入や基本操作が行えることを前提で進めます。

↓前提知識はこちらをご覧ください↓

【Python】導入方法から基本操作について
Pythonは無料で使えるプログラミング言語でA「I開発や作業の自動化」に強いとされてます。導入は公式サイトからダウンロード。DLしたら「IDLE」を起動して動かします。2行以上のブログラムの場合は「.py」ファイルを作成する必要があります。

進数とは

進数とは、特定の数字の表し仕方です。
○○進数のように、どの数字まで “1文字” で数えれるようにするかで処理が変わります。

なので「10」という数字の組み合わせで表される内容は、進数によって変わります。
私たちに馴染みが深い10進数で表すと… 下図のようになります。

・2進数の「10」 → 10進数だと「2」
・8進数の「10」 → 10進数だと「8」
・16進数の「10」 → 10進数だと「16」

“1文字” で数えれるようにする下図の限界を迎えると…
数字が1つ繰り上がるという形になります。

・2進数 → 1文字で限界 → 2で繰り上がり
・8進数 → 8文字で限界 → 8で繰り上がり
・16進数 → 16文字で限界 → 16で繰り上がり

※「0」を1つの数とカウントする点に注意。

以上が、進数についての解説です。

Pythonで2,8,10,16進数を表現する

普通の数字は10進数として処理されます。
なので「2,8,16進数」を表す場合、特別な処理が必用です。

【進数を表す記号】

・bin() → 数字を2進数化
・oct() → 数字を8進数化
・hex() → 数字を16進数化

・10を2進数化すると「1010」になります。
・10を8進数化すると「12」になります。
・10を10進数するのは、そのままで大丈夫です。
・10を16進数化すると「a」になります。

こちらは、下図のようなprint()処理で確認できます。
それぞれの進数は下記のように省略されて表示されます。

【進数を表す省略表記】

0b → これ以降の数字が2進数であることを表す
・0oこれ以降の数字が8進数であることを表す0xこれ以降の数字が16進数であることを表す

なので、Print結果はこのような表記になります。

また、この省略記号を使えば、bin() oct() hex()を使わなくても2,8,16進数を表記できます。

【進数の表し方】

・bin() → 0b
・oct() → 0o
・hex() → 0x

なので、bin(10)は0x10と表す事も可能です。
※後で紹介するprintの挙動が若干変わる点だけ注意。

0b = bin()の略
0o = oct()の略
0x = hex()の略
と考えてください。


…なんで、16進数だけ0hじゃななくて0xなの問題。

以上が、Pythonで2,8,10,16進数を表現する方法です。

2,8,10,16進数をprintする

print()にbin(),oct(),hex()を使った場合… 何の問題も無く出力できます。
出力結果には「0b,0o,0x」が付きます。

そして、次の挙動が問題です。
print()に0b,0o,0xを使って2,8,16進数を入れると10進数表記に変換されます。

・2進数の10 → 10進数だと「2」になります。
・8進数の10 → 10進数だと「8」になります。
・16進数の10 → 10進数だと「16」になります。

なので、0b,0o,0x形式のデータを2,8,16進数で出力するには…
bin(0b), oct(0o), hex(0x)のような形にする必要があります。

2,8,16進数の「10」をbin()、oct()、hex()に入れると…
そのまま2,8,16進数での「10」が出力されます。

・2進数の「10」 → 10進数だと「2」
・8進数の「10」 → 10進数だと「8」
・16進数の「10」 → 10進数だと「16」

なので、データの表示方法が変わりますが…
内容的にはすべて同じです。

以上が、2,8,10,16進数をprintする方法の解説です。

2,8,10,16進数を別の進数に変換する

bin(),oct(),hex()に別進数の「0b,0o,0x」を使うと数値の変換が可能です。
たとえばbin(0b),bin(0o),bin(),bin(0x)のようにすると…
すべての数字が2進数に変換されてprintされます。

・8進数の「10」 → 10進数だと「8」
→ 2進数で表すと「1000」

・10進数の「10」
→ 2進数で表すと「1010」

・16進数の「10」 → 10進数だと「16」
→ 2進数で表すと「100000」

hex(0b),hex(0o),hex(),hex(0x)のようにすると…
すべての数字が16進数に変換されてprintされます。

・2進数の「10」 → 10進数だと「2」
→ 16進数で表すと「2」

・8進数の「10」 → 10進数だと「8」
→ 16進数で表すと「8」

・10進数の「10」
→ 16進数で表すと「a」

あと、省略しましたが…
8進数のoct()も同じテクニックが使えます。

10進数への変換はint()で行えます。

あとprint()の場合、intを使わなくても勝手に10進数に変換されてます。

以上が、2,8,10,16進数を別の進数に変換する方法です。

まとめ

今回は、Pythonで2,8,10,16進数の表記と変換方法を紹介しました。

・進数とは特定の数字の表現方法
・進数が変わると “1文字” で数えれる数字が変わる
・pythonだと、bin(),oct(),hex()を使えば数字の進数を変換できる
・0b,0o,0xという形で進数を表現する事も可能

また、他にもpythonやプログラムについて解説してます。

【Python】「==」と「is」の違いと使い分けについて【数値,オプジェクトID】
「==」は値の一致でTureを返す処理で「is」はオプジェクトIDの一致でTureを返すになります。Intの「1」とFloatの「1.0」は値は同じだがオプジェクトIDが変わるので注意。あと数字を使ったif文は「is」を使うと警告文が出ます。
【Python】ビット演算の使い方【演算子,活用方法,ゲーム属性】
ビット = PC内部の「0」と「1」を計算する装置1つの単位で、ビット演算を使うと、複数の条件があるモノを手軽に管理できます。これはゲームなどの属性を作る際に役立ちます。さらに、ビット演算子を使うと、入力したビットに変化を加える事ができます。
【Python】.pyファイルを.exeに変換する方法【自作ソフト,デスクトップアプリ開発】
.pyファイルの.exe化は「pyinstaller」を使えばできます。こちらはコマンドプロンプトで導入&操作します。.pyファイルがある場所に移動し「pyinstaller .py --追加情報」を打ち込むだけで動作します。こちらを解説。

ぜひ、こちらもご覧ください。

コメント

タイトルとURLをコピーしました