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

整数与IP地址间的转换

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

while True:
    try:
        ip_fs = list(map(int,input().split(".")))
        ip_int = int(input())
    except EOFError:
        break
    else:
        #第一个ip段左移24位,第二个ip段左移16位,以此类推,在对四个左移后数进行|操作即可输出
        n1,n2,n3,n4 = ip_fs[0]<<24,ip_fs[1]<<16,ip_fs[2]<<8,ip_fs[3]
        n = n1|n2|n3|n4
        print(n)

        #4个ip段循环四次,每个ip段占8位
        strn = []
        for _ in range(4):               
            rn = 0
            for i in range(8):
                #对个ip段,将其进行&1操作获取每位的数字
                p = ip_int&1
                rn += p*2**i
                ip_int = ip_int>>1
            strn.append(str(rn))
        #strn反转后的每个元素才是对应的ip段对应的整数
        strn.reverse()
        print('.'.join(strn))

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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