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

整数与IP地址间的转换

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

def ip_to_num(s):
    res = ""
    nums = s.split(".")
    for num in nums:
        # 十进制转二进制
        bin_unit = bin(int(num))[2:]
        N = len(bin_unit)
        if N < 8:
            bin_unit = "0" * (8-N) + bin_unit
        res += bin_unit
        
    return str(int(res, base=2))


def num_to_ip(s):
    bin_str = bin(int(s))[2:]
    N = len(bin_str)
    
    # 长度不够补0
    if N < 32:
        bin_str = "0" * (32-N) + bin_str

    nums = [bin_str[:8], bin_str[8:16], bin_str[16:24], bin_str[24:]]
    dec_nums = []
    for num in nums:
        dec_nums.append(str(int(num, base=2)))

    return ".".join(dec_nums)

if __name__ == "__main__":
    while True:
        try:
            ip = input()
            num = input()
            print(ip_to_num(ip))
            print(num_to_ip(num))
        except:
            break

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-23 14:13
这是聊岔撇了吗,相同的话问了两遍
吴offer选手:上下文切换这一块
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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