题解 | #整数与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

全部评论

相关推荐

mama3925:建议专业技能里测试移到最上面,加粗。然后适当加入些自动化测试工具。第二个项目,第三条亮点最后错别字。然后佬如果对自己很自信的话,可以项目放前面,然后项目里可以编造点测试经历,写在写在项目亮点的前两行。最后可加个自我评价,放个博客或者仓库链接
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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