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

整数与IP地址间的转换

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

import sys
"""
子问题1:四段式IP->10进制整数
step1: IP分成四段,10进制 int(IP[i])-> 2进制形式
step2: 2进制转10进制

子问题2:10进制整数 -> 四段式IP
step1: 10进制整数转2进制
step2: 四个2进制数转为四个10进制数,拼接成ip

注:2进制前两位为'0b'
"""


def ip_2bin_2int(str_ip):
    split_ip = str_ip.split(".")
    bin_str = ""
    for i in range(4):
        tmp_str = bin(int(split_ip[i]))[2:]
        if len(tmp_str) < 8:
            tmp_str = "0" * (8 - len(tmp_str)) + tmp_str
        bin_str = bin_str + tmp_str
    int_sum = int(bin_str, 2)
    return int_sum


def int_2bin_2ip(v_int):
    bin_str = bin(v_int)[2:]
    if len(bin_str) < 8 * 4:
        bin_str = "0" * (8 * 4 - len(bin_str)) + bin_str
    int_list = []
    for i in range(4):
        tmp_str = str(int(bin_str[i * 8 : (i + 1) * 8], 2))
        int_list.append(tmp_str)
    str_ip = ".".join(int_list)
    return str_ip


if __name__ == "__main__":
    while True:
        try:
            str_ip = str(input())
            v_int = int(input())
            print(ip_2bin_2int(str_ip))
            print(int_2bin_2ip(v_int))
        except:
            break

全部评论

相关推荐

10-13 13:49
南京大学 财务
饿魔:笑死我了,你简直是个天才
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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