ip = input('输入IP地址:') if ip.isdigit():#判断IP地址格式 ip1=int(ip) if ip1>4294967296:#2**32,判断ip地址是否合法 print('IP地址不合法') else: def ip2decimalism(ip):#转32位二进制 dec_value = 0 v_list = ip.split('.')#将ip分装到列表中 v_list.reverse()#将列表元素反向排列 t = 1 for v in v_list: dec_value += int(v) * t#计算32位二进制 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): dec_value = ip2decimalism(ip) ip = decimalism2ip(dec_value) print('IP地址是:',ip) ip = '' break else: ip_list = ip.split(".") ipgeshi=len(ip_list)#统计列表中元素个数 if ipgeshi>3 and ipgeshi<5:#判断ip地址是否合法 for v in ip_list: v1=int(v) if v1>254:#判断ip地址是否合法 print('IP地址不合法') break else: for i in range(len(ip_list)): ele = bin(int(ip_list[i]))#转二进制 ip_list[i] = ele[2:]#把0b切掉 得到后面的二进制01内容 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 07:29:36 浏览: 144
jQueryIPInput:此库将文本类型输入框转换为 ip 输入框,这将自动完成八位字节并强制执行 ip 格式
你可以使用以下代码将上述的 IP 地址转换脚本使用 Tkinter 进行可视化:
```python
import tkinter as tk
def ip_conversion():
ip = entry.get()
if ip.isdigit(): # 判断IP地址格式
ip1 = int(ip)
if ip1 > 4294967296: # 2**32,判断ip地址是否合法
result_label.config(text="IP地址不合法")
else:
decimal_ip = ip2decimalism(ip)
result_label.config(text="IP地址是:" + decimal_ip)
else:
ip_list = ip.split(".")
ipgeshi = len(ip_list) # 统计列表中元素个数
if ipgeshi > 3 and ipgeshi < 5: # 判断ip地址是否合法
for v in ip_list:
v1 = int(v)
if v1 > 254: # 判断ip地址是否合法
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:] # 把0b切掉 得到后面的二进制01内容
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 = int("0b" + val, base=2)
ip_address = decimalism2ip(decimal_ip)
result_label.config(text="IP地址是:" + ip_address)
break
else:
result_label.config(text="IP地址不合法")
def ip2decimalism(ip): # 转32位二进制
dec_value = 0
v_list = ip.split('.') # 将ip分装到列表中
v_list.reverse() # 将列表元素反向排列
t = 1
for v in v_list:
dec_value += int(v) * t # 计算32位二进制
t = t * (2 ** 8) # 返回十进制结果
return str(dec_value)
def decimalism2ip(dec_value): # 转ip地址标准格式
t = 2 ** 8
ip = ""
for _ in range(4):
v = dec_value % t
ip = '.' + str(v) + ip
dec_value = dec_value // t
ip = ip[1:]
return ip
# 创建窗口
window = tk.Tk()
window.title("IP地址转换")
window.geometry("300x200")
# 创建输入框和按钮
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()
```
这样,你可以通过运行这个脚本来使用 Tkinter 界面进行 IP 地址转换。用户在输入框中输入 IP 地址,然后点击转换按钮,结果将显示在窗口中的标签上。
阅读全文