質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

2478閲覧

36 進数に変換したい

ShiroR

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/10/05 11:24

教えてください!

Pythonを利用し
10進数を2進数、8進数、16進数で表す方法はわかるのですが

そのほかの進数で表すことはできますか? 

進数変換できるサイトをつかうのではなく、どうしても自分でやりたいのです。

調べると、 Java C#  での変換が可能であると載っていました。

しかし、Pythonにこのような機能は備わっていないのでしょうか?

私が無知すぎるだけで、実はすべての言語で変換は可能なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShiroR

2017/10/06 09:47

回答ありがとうございます。 全部英語のページ... 恥ずかしながらまだ読めないです。勉強します。 numpyモジュールをimportすればなんとかなりそうですね! 改めてPythonは文法が整備されているなぁと驚かされます。 敬意をこめて、followさせていただきます。
退会済みユーザー

退会済みユーザー

2017/10/06 12:02

Google翻訳もお試しください。 URLを翻訳窓に突っ込むと、右側の翻訳後リンクに日本語に化けたページが出てきます。
ShiroR

2017/10/13 13:33

回答ありがとうございます。 URLを翻訳に入れるだけでそのようなことができるのですね! 明日早速やってみます。 返信が遅れて申し訳ありません。。
guest

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

YouheiSakurai

総合スコア6149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShiroR

2017/10/06 10:00

string はまだつかったことがありませんから、とても新鮮です。 長いプログラムを組む時間も楽しみですが コードはシンプルであると見栄えが良く感じ、 短いものにも魅力を感じます。 自分で書けるように頑張ります。 回答ありがとうございます ^ ^
guest

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
golgi

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShiroR

2017/10/06 09:53

回答ありがとうございます。 自分で考えてプログラムを組んでいる時間というのも楽しいですよね。 ただ、私はまだまだ至らない部分があります。 こういったコードも自分でかけるように継続して頑張ります。 敬意をこめて、followさせていただきます。
guest

0

python 基数変換で調べたのみですが、標準機能ではないかもしれません。

pythonで10進数からn進数に基数変換 - Misc Notes

11進数以上を考える場合、数をどのように表すのかという問題があります。
そのため、言語によって標準で提供されるかどうかは変わってくるものと思います。
もしかしたら現在は提供されているかもしれませんが、そこまでは調べていません。

投稿2017/10/05 11:34

編集2017/10/05 11:45
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShiroR

2017/10/05 11:43

もう一度注意して調べてみると、Pythonでの36進数変換は 関数はありませんでしたがウェブサイトに載っていました。。。 やはり、一から定義していく必要がある気がしてきました。 関数一つで変換ができれば、便利なのですが(笑) 回答ありがとうございます ^ ^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問