Py3 進制轉換

Powered by:AB_IN 局外人

十進制轉化成k進制(k<=16)

s爲整型十進制數,k爲進制數,返回值爲k進制字符串。(因可能k>10,含有字母)

def f(s,k):
    mu_ban="0123456789ABCDEF";a=""
    while s>0:#注意這裏是大於0
        yu_shu=s%k
        s=s//k
        a+=mu_ban[yu_shu]
    return a[::-1]

特殊的
其中s爲十進制整數,返回值爲字符串。
10->2 bin(s) -> 0b...
10->8 oct(s) ->0o...
10->16 hex(s) ->0x...

print(hex(44071))
# 0xac27 ac爲小寫字母

怎麼去掉0x?

print(hex(44071)[2:])

k進制轉換成十進制

s爲字符串,k爲s是什麼進制,返回值爲十進制整數。

int(s,k)

print(int("0b10",2))
print(int("10",2))
# 2 2

注意到s前面可以沒有0b

非10進制類型之間轉換

請自行套娃。。。

12進制轉換成3進制。

print(f(int("a31",12),3))
# 2000201

11進制轉換成12進制。

print(f(int("AAA31A4A",11),12))
# 5B8BBBB8

上面只是打個比方,需要注意的是,如果一個數是n進制,那麼這個數的每個數位上都沒有n。

所以

P1143 進制轉換

def f(s,k):
    mu_ban="0123456789ABCDEF";a=""
    while s>0:
        yu_shu=s%k
        s=s//k
        a+=mu_ban[yu_shu]
    return a[::-1]
n=int(input())
s=input()
k=int(input())
print(f(int(s,n),k))

✿✿ヽ(°▽°)ノ✿洛谷AC100題!
完結。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章