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