教えてください!
Pythonを利用し
10進数を2進数、8進数、16進数で表す方法はわかるのですが
そのほかの進数で表すことはできますか?
進数変換できるサイトをつかうのではなく、どうしても自分でやりたいのです。
調べると、 Java C# での変換が可能であると載っていました。
しかし、Pythonにこのような機能は備わっていないのでしょうか?
私が無知すぎるだけで、実はすべての言語で変換は可能なのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
ベストアンサー
numpy.base_repr()
が使えそうです。
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.base_repr.html
Python
1import numpy as np 2print(np.base_repr(32*32-1,32)) 3# => VV
投稿2017/10/05 12:36
総合スコア15898
0
短めに書いてみた。
python
1from string import digits, ascii_uppercase 2 3 4_b36_digits = digits + ascii_uppercase 5def b36(n): 6 assert isinstance(n, int) and n >= 0, \ 7 'Must be nonnegative integer' 8 if n < 36: 9 return (_b36_digits)[n] 10 else: 11 return b36(n//36) + (_b36_digits)[n%36] 12 13 14print(b36(0)) 15print(b36(350000000123))
投稿2017/10/06 05:08
総合スコア6149
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
もし自分で書きたいなら、こんな感じでどうでしょうか?
python
1def base(n, b, digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"): 2 # しないと、''だけになってしまう 3 if n == 0: 4 return '0' 5 s = [] 6 p = abs(n) 7 while p: 8 s.append(digits[p % b]) 9 p //= b 10 # こうして負の数も変換できる 11 if n < 0: 12 s.append('-') 13 return ''.join(reversed(s)) 14 15 16>>> base(32*32-1, 32) 17'VV' 18>>> base(255, 16) 19'FF' 20>>> base(29234652, 36) 21'HELLO' 22>>> base(-573, 9) 23'-706' 24>>> base(64, 8) 25'100' 26>>> base(61, 62) 27'z' 28>>> base(10, 2, 'ab') # 自分の数字も使える 29'baba'
投稿2017/10/06 02:40
編集2017/10/06 02:48総合スコア31
0
python 基数変換
で調べたのみですが、標準機能ではないかもしれません。
pythonで10進数からn進数に基数変換 - Misc Notes
11進数以上を考える場合、数をどのように表すのかという問題があります。
そのため、言語によって標準で提供されるかどうかは変わってくるものと思います。
もしかしたら現在は提供されているかもしれませんが、そこまでは調べていません。
投稿2017/10/05 11:34
編集2017/10/05 11:45
退会済みユーザー
総合スコア0
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/06 09:47
退会済みユーザー
2017/10/06 12:02
2017/10/13 13:33