# 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()