【Python】 10進法→N進法変換

■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
タイトルとURLをコピーしました