■N進法→10進法変換
N進法を10進法へ変換する方法は以下の通りである
例:
①3進法の値、1201を10進法へ変換
②4進法の値、231を10進法へ変換
③16進法の値、FFを10進法へ変換(※)
(※)なお、16進法の場合、10進法の10から15は以下のアルファべットで表記される。
■サンプルコード
今回は16進法までの変換を前提とする
# -*- coding: UTF-8 -*-
# アルファベットを数字に変換する関数(16進法まで)
def Check_A_To_Num(num:str) -> str:
if num == 'A':
return '10'
elif num == 'B':
return '11'
elif num == 'C':
return '12'
elif num == 'D':
return '13'
elif num == 'E':
return '14'
elif num == 'F':
return '15'
else:
return num
# N進法を10進法に変換する関数
def ChangeNTo10(num:str, N:int) -> int:
# 引数「num」をlist関数にて1文字ずつに分割し配列に格納
# 例:'1201'→['1', '2', '0', '1']
before_num = list(num)
# 初期値をセット
after_num = 0
# ループ処理(1から配列の要素数+1まで)
for i in range(1, len(before_num) + 1):
# アルファベットを数字に変換する関数(16進法まで)を呼び出し変数に格納
# -iを使用し、リストの逆順(1の位)から要素を取得
tmp_num = str(Check_A_To_Num(before_num[-i]))
# 計算処理(各位の値をN進法から10進法に変換)
tmp_cal = int(tmp_num)*(N ** (i - 1))
# 各位の値をを合算
after_num = after_num + tmp_cal
return after_num
# メイン処理
if __name__ == '__main__':
str_num = '1201'
N = 3
print(ChangeNTo10(str_num, N))
str_num = '231'
N = 4
print(ChangeNTo10(str_num, N))
str_num = 'FF'
N = 16
print(ChangeNTo10(str_num, N))
■実行結果
46
45
255
■ちなみに・・・
N進法→10進法変換はpythonのint関数でも変換可能
int('文字列', N進法)
・サンプルコード
print(int('1201', 3))
print(int('231', 4))
print(int('FF', 16))
・実行結果
46
45
255
コメント