题解 | 整数与IP地址间的转换
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
这道题其实要实现两个方案,一是把输入的第一行的ip地址转为十进制;二是把第二行的十进制转为ip地址。
Python有进制转换的函数,n进制转10进制用int(str,n);10进制转2进制用bin(),同理,八进制用oct(),十六进制用hex()。
要注意格式化字符串,去掉转换函数默认生成的前缀0b,补全前置0,即使用右对齐(rjust)
#ip转10进制
def ip2de(s):
tmplist=[]
for i in range(len(s)):
#转换为二进制
#去掉前缀0b并补全前缀0
tmp=bin(int(s[i]))[2:].rjust(8,"0")
tmplist.append(tmp)
tmpnum="".join(tmplist)
goalnum=int(tmpnum,2)
return goalnum
def de2ip(s):
tmp=bin(int(s))[2:].rjust(32,"0")
numlist=[]
for i in range(0,len(tmp),8):
tmpnum=tmp[i:i+8]
num=int(tmpnum,2)
numlist.append(str(num))
goal=".".join(numlist)
return goal
s1=input().split(".")
s2=input()
print(ip2de(s1))
print(de2ip(s2))
查看1道真题和解析