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

整数与IP地址间的转换

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

import sys

def iptoint(str):
# 1. ip to int
# ip切分
    l_bin_ip = []
    l_ip = str.split('.')
# 把每段变成二进制
    for item in l_ip:
        tmp = bin(int(item))[2:]       
        l_bin_ip.append('0'*(8-len(tmp))+tmp) 
          
# 拼接二进制
    bin_ip = ''.join(l_bin_ip)
    # print('{}->{}->{}'.format(l_ip, l_bin_ip, bin_ip))
# 二进制转十进制
    return int(bin_ip, base=2)


def inttoip(num):
    l_int_num = []
# 2. int to ip
# 转二进制
    bin_num = bin(num)
    bin_num = bin_num[2:]
    less = 32 - len(bin_num)
    bin_num = '0'*less + bin_num
# 切分成四分
    for i in range(4):
        # 变成整数
        tmp = int(bin_num[i*8:(i+1)*8],base=2)
        l_int_num.append('{}'.format(tmp))
# 用.拼接
    return '.'.join(l_int_num)


if __name__ == '__main__':
    str = sys.stdin.readline().strip()
    num = int(sys.stdin.readline().strip())
    print(iptoint(str))
    print(inttoip(num))

全部评论

相关推荐

04-18 21:21
佛山大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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