■N進法→10進法変換
10進法をN進法へ変換する方法は以下の通りである
例:
①10進法の値、「46」を3進法へ変換 → 1201

②10進法の値、「45」を4進法へ変換 → 231

③10進法の値、「255」を16進法へ変換 → FF(※)

(※)なお、16進法の場合、10進法の10から15は以下のアルファべットで表記される。

■サンプルコード
今回は16進法までの変換を前提とする
# -*- coding: UTF-8 -*-
# 数字をアルファベットに変換する関数(16進法まで)
def Check_Num_To_A(num:int) -> str:
    if num == 10:
        return 'A'
    elif num == 11:
        return 'B'
    elif num == 12:
        return 'C'
    elif num == 13:
        return 'D'
    elif num == 14:
        return 'E'
    elif num == 15:
        return 'F'
    else:
        return str(num)
# 10進法をN進法に変換する関数
def Change10ToN(num:int, N:int) -> str:
    # 初期値をセット
    after_num = ''
    cal_num = num
    # 変換対象の値が0未満になるまでループ処理
    while cal_num > 0:
        # 余りを取得
        tmp_cal = cal_num % N
        # 取得した余りについて、
        # 数字をアルファベットに変換(16進法まで)
        tmp_num = Check_Num_To_A(tmp_cal)
        # 変換した値を文字列で連結
        after_num = tmp_num + after_num
        # 変換対象の値について、商のみを取得
        cal_num = cal_num // N
    return after_num
# メイン処理
if __name__ == '__main__':
    int_num = 46
    N = 3
    print(Change10ToN(int_num, N))
    int_num = 45
    N = 4
    print(Change10ToN(int_num, N))
    int_num = 255
    N = 16
    print(Change10ToN(int_num, N))
■実行結果
1201
231
FF

コメント