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题!
完结。

猜你喜欢

转载自blog.csdn.net/qq_45859188/article/details/106401586