Python で10進数とn進数の変換

int型の変数をn進数表示する必要があったので,その時いろいろ調べたメモです.関数の形で使えるようになっています.







10進数からn進数へ(自作)

紙に書いて(筆算)直接10進数からn進数に変換する方法を,そのままプログラムに書き直したものです.筆算のやり方をど忘れした方は,こちらのリンクを参照してください.

########関数部分##############
def Base_10_to_n(X, n):
    X_dumy = X
    out = ''
    while X_dumy>0:
        out = str(X_dumy%n)+out
        X_dumy = int(X_dumy/n)
    return out
############################

#####関数をつかってみる.#####
######今回は二進数に変換######
x10 = 35
x2 = Base_10_to_n(x10, 2)
print( x2 )#"100011"が表示される.

「Base_10_to_n(X, n)」という関数で,10進数のint型の数字Xを,n進数の文字列(str型)にして返しています.結果がstr型であることに注意.7行目の「int(X_dumy/n)」という部分でintを書かないと,float型で返してしまうので気を付ける.型推測,恐るべし.

10進数からn進数へ(オススメ)

上の関数だと行数が多い.もっとシンプルに書けないかと考えたところ,再帰的に処理すればよさそうだと考えた.再帰的処理にあまり慣れていないので,参考になるものを探していたら,次のサイトにドンピシャの結果があった.

10進数をn進数に変換 – Tech tips

関数部分だけを少し変形して引用すると次のよう.

########関数部分##############
def Base_10_to_n(X, n):
    if (int(X/n)):
        return Base_10_to_n(int(X/n), n)+str(X%n)
    return str(X%n)
############################


#####関数をつかってみる.#####
######今回は二進数に変換######
x10 = 35
x2 = Base_10_to_n(x10, 2)
print( x2 )#"100011"が表示される.

int型を入力してstr型を返すのは同じだが,再帰的に関数を定義することで,自作のものより洗練されている気がするので,こちらのアイディアを使わせてもらうことにした.

n進数から10進数へ(自作)

########関数部分##############
def Base_n_to_10(X,n):
    out = 0
    for i in range(1,len(str(X))+1):
        out += int(X[-i])*(n**(i-1))
    return out#int out
############################

print(Base_n_to_10('253',4))#"55"と表示される.

「Base_n_to_10(X,n)」という関数で,n進数のstr型の変数Xを10進数の数字(int型)にして返してくれる.

このブログについて

IAtLeX です.ブログをはじめてさほど時間がたっていないので,未熟な内容が多々あるかと思いますが,それも時間が解決してくれるはず...Python系の記事を着々と充実させていきたいです.投稿主についてはこちらを参照してください.

このブログについて - http://iatlex.com/about_blog/

コメントを残す

*