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

整数与IP地址间的转换

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

import sys

def IpToNumber(ip):
    res = ''
    for i in range(len(ip)):
        ip[i] = str("{0:b}".format(int(ip[i])))
        if len(ip[i]) < 8:
            for j in range(8-len(ip[i])):
                ip[i] = '0' + ip[i]
        res += ip[i]
    return int(res,2)

def NumberToIp(num):
    binNum = str("{0:b}".format(int(num)))
    if len(binNum) < 32:
        for i in range(32-len(binNum)):
            binNum = '0' + binNum
    ip1 = int(binNum[0:8],2)
    ip2 = int(binNum[8:16],2)
    ip3 = int(binNum[16:24],2)
    ip4 = int(binNum[24:32],2)
    ip = str(ip1)+'.'+str(ip2)+'.'+str(ip3)+'.'+str(ip4)
    return ip

for a in sys.stdin:
    flag = 'num'
    for i in a:
        if i == '.':
            flag = 'ip'
    if flag == 'ip':
        a = a.split('.')
        print(IpToNumber(a))
    else:
        a = int(a)
        print(NumberToIp(a))

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务