ip = input('输入IP地址:') if ip.isdigit(): ip1=int(ip) # print("字符串中只包含数字") if ip1>4294967296: print('IP地址不合法') else: def ip2decimalism(ip): dec_value = 0 v_list = ip.split('.') v_list.reverse() t = 1 for v in v_list: dec_value += int(v) * t t = t * (2 ** 8) return dec_value def decimalism2ip(dec_value): ip = '' t = 2 ** 8 for _ in range(4): v = dec_value % t ip = '.' + str(v) + ip dec_value = dec_value // t ip = ip[1:] return ip if __name__ == '__main__': while(1): # ip = input() dec_value = ip2decimalism(ip) # print(dec_value) ip = decimalism2ip(dec_value) print('IP地址是:',ip) break else: ip_list = ip.split(".") ipgeshi=len(ip_list) if ipgeshi >3 and ipgeshi<5: for v in ip_list: v1=int(v) if v1>254: print('IP地址不合法') break else: for i in range(len(ip_list)): ele = bin(int(ip_list[i]))#得到 "0b11000000 0b10101000 0b1100 0b1001111" ip_list[i] = ele[2:]#把0b切掉 得到后面的二进制01内容 #ip_list[i]=ip_list[i].strip("0b")也可以去掉 if len(ip_list[i]) < 8:#补全到八位 strl = "0" * (8 - len(ip_list[i])) + ip_list[i] ip_list[i] = strl val = "".join(ip_list) print('十进制IP地址是:',int("0b"+val, base=2)) break else: print('IP地址不合法')添加窗口
时间: 2024-02-14 21:29:36 浏览: 30
以下是将输入 IP 地址转换为十进制或二进制 IP 地址的代码,结合了 Tkinter 创建的可视化界面:
```python
import tkinter as tk
def ip_conversion():
ip = entry.get()
if ip.isdigit():
ip1 = int(ip)
if ip1 > 4294967296:
result_label.config(text="IP地址不合法")
else:
decimal_ip = ip2decimalism(ip)
binary_ip = decimalism2binary(decimal_ip)
result_label.config(text="IP地址是:" + decimal_ip + "\n32位二进制IP地址是:" + binary_ip)
else:
ip_list = ip.split(".")
ipgeshi = len(ip_list)
if ipgeshi > 3 and ipgeshi < 5:
for v in ip_list:
v1 = int(v)
if v1 > 254:
result_label.config(text="IP地址不合法")
break
else:
for i in range(len(ip_list)):
ele = bin(int(ip_list[i]))
ip_list[i] = ele[2:]
if len(ip_list[i]) < 8:
strl = "0" * (8 - len(ip_list[i])) + ip_list[i]
ip_list[i] = strl
val = "".join(ip_list)
decimal_ip = str(int("0b" + val, base=2))
binary_ip = decimalism2binary(int(decimal_ip))
result_label.config(text="IP地址是:" + decimal_ip + "\n32位二进制IP地址是:" + binary_ip)
break
else:
result_label.config(text="IP地址不合法")
def ip2decimalism(ip):
dec_value = 0
v_list = ip.split('.')
v_list.reverse()
t = 1
for v in v_list:
dec_value += int(v) * t
t = t * (2 ** 8)
return str(dec_value)
def decimalism2binary(dec_value):
binary_ip = format(dec_value, '032b')
formatted_binary_ip = '.'.join([binary_ip[i:i+8] for i in range(0, 32, 8)])
return formatted_binary_ip
# 创建窗口
window = tk.Tk()
window.title("IP地址转换")
window.geometry("300x250")
# 创建输入框和按钮
entry = tk.Entry(window)
entry.pack(pady=10)
convert_button = tk.Button(window, text="转换", command=ip_conversion)
convert_button.pack()
# 创建结果标签
result_label = tk.Label(window, text="")
result_label.pack(pady=10)
# 运行窗口主循环
window.mainloop()
```
通过运行这段代码,你可以在窗口中输入一个 IP 地址,然后选择转换为十进制或二进制 IP 地址,并点击转换按钮。程序将会在窗口中显示转换结果,包括十进制 IP 地址和32位二进制 IP 地址。