题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

def ip_num(ip):
    ipl=map(int,ip.split("."))
    l=""
    for i in ipl:
        a=""
        while 1:
            y=i%2
            s=i//2
            if s==0:
                a+=str(y)
                break
            a+=str(y)
            i=s
        l+=("0"*8+a[::-1])[-8:]
    num=0
    for x,y in enumerate(l):
        num+=int(y)*2**(len(l)-x-1) 
    return num
def num_ip(num:int):
    x=""
    while 1:
        y=num%2
        s=num//2
        x+=str(y)
        if s==0:
            break
        num=s
    l="0"*32
    l+=x[::-1]
    l=l[-32:]
    ip=[]
    for i in range(0,32,8):
        n=l[i:i+8]
        num=0
        for x,y in enumerate(n):
            num+=int(y)*2**(len(n)-x-1) 
        ip.append(str(num))
    ip=".".join(ip)

    return ip

while 1:
    try:
        ip=input()
        num=int(input())
        print(ip_num(ip))
        print(num_ip(num))
    except:
        break





全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:27
明天又是董事长面,啥时候是个头啊
在太阳里长大的人:公司就仨人吧😂
点赞 评论 收藏
分享
06-24 19:27
云南大学 Java
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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