08 ip 转换

# 1字节等于8位
# IP: 192.168.12.79  ->  001010010 . 001010010 . 001010010 . 001010010
# 1. 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制并通过,连接起来生成一个新的字符串。
ip = "192.168.12.79"
ip_list = ip.split('.') # ['192','168','12','79']
result = []
"""
1、给你一个IP地址,请将IP地址 中的每个进制数字转换成对应二进制
2、继续实现,将结果拼接起来:11000000101010000000101100010111,再将此二进制的字符串转换成10进制整数
"""
# 方式1
def ip_switch(ip):
    data_list = ip.split('.')  # 转换为:列表字符串[192.168.11.23]
    result = []
    for item in data_list:
        bin_string = bin(int(item)).replace('0b', '')  # 进制转换后为字符串
        if len(bin_string) % 8 == 0:
            result.append(bin_string)
        else:
            new_bin_string = (("0" * (8 - len(bin_string))) + bin_string)
            result.append(new_bin_string)
    return result

# 方式2
def ip_switch2(ip):
    result = []
    data_list = ip.split('.')
    for item in data_list:
        bin_string = bin(int(item))[2:]
        bin_8_string = bin_string.rjust(8, '0')
        result.append(bin_8_string)

    return result

def ip_switch3(ip):
    result = ''.join([bin(int(item))[2:].rjust(8, '0') for item in ip.split('.')])

    return result

def main():
    ip = "192.168.11.23"
    ip_list = ip_switch2(ip)
    str_item = ''.join(ip_list)  # 将列表中的字符串通过join 进行拼接成一起
    v2 = int(str_item, base=2)
    print(v2)

    v3 = int(ip_switch3(ip), base=2) # 将二进制后转换成 10进制
    print(v3)


main()
posted @ 2024-07-24 21:41  jhchena  阅读(16)  评论(1编辑  收藏  举报