题解 | 整数与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))






全部评论

相关推荐

01-21 20:09
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务