例子:IP:192.168.1.10
方法一:
In [1]: bin(192)
Out[1]: '0b11000000'
In [2]: bin(168)
Out[2]: '0b10101000'
In [4]: bin(1)
Out[4]: '0b1'
In [5]: bin(10)
Out[5]: '0b1010'
所以192.168.1.10 轉換成整數:3232235786
In [6]: 0b11000000101010000000000100001010
Out[6]: 3232235786
方法二:
In [7]: 192*256**3+168*256**2+1*256**1+10*256**0
Out[7]: 3232235786
##########實戰代碼####################
[root@master script]# cat ip.py #!/usr/bin/python # coding:utf-8 def ip2int(): ip = raw_input('請輸入需要轉換成數字的IP(例如:192.168.1.10): ') ip_list = ip.strip().split('.') ip_int = int(ip_list[0])*256**3+int(ip_list[1])*256**2+int(ip_list[2])*256**1+int(ip_list[3])*256**0 return ip_int #def int2ip(num): # iplist = [] # for n in range(4): # num,mod = divmod(num,256) # iplist.append(str(mod)) # rip = iplist[::-1] # rip_num = '.'.join(rip) # return rip_num def int2ip(): num = int(raw_input('請輸入需要轉換成IP的整數: ')) iplist = [] for n in range(4): num,mod = divmod(num,256) iplist.insert(0,str(mod)) return '.'.join(iplist) def show_menu(): CMDs = {'1':ip2int,'2':int2ip} while True: prompt = """\033[31;1m(1)ip轉換成數字\033[0m \033[32;1m(2)數字轉換成IP\033[0m \033[33;1m(3)退出(q)\033[0m \033[34;1m請輸入你的選擇(1/2/3):\033[0m""" choice = raw_input(prompt) if choice == '3': break print CMDs[choice]() if __name__ == '__main__': show_menu()
檢驗:
[root@master script]# python ip.py
(1)ip轉換成數字
(2)數字轉換成IP
(3)退出(q)
請輸入你的選擇(1/2/3):1
請輸入需要轉換成數字的IP(例如:192.168.1.10): 86.78.98.34
1447977506
(1)ip轉換成數字
(2)數字轉換成IP
(3)退出(q)
請輸入你的選擇(1/2/3):2
請輸入需要轉換成IP的整數: 1447977506
86.78.98.34
(1)ip轉換成數字
(2)數字轉換成IP
(3)退出(q)
請輸入你的選擇(1/2/3):3
########終極版########## [root@master script]# cat ip.py #!/usr/bin/python # coding:utf-8 #def ip2int(): # ip = raw_input('請輸入需要轉換成數字的IP(例如:192.168.1.10): ') # ip_list = ip.strip().split('.') # ip_int = int(ip_list[0])*256**3+int(ip_list[1])*256**2+int(ip_list[2])*256**1+int(ip_list[3])*256**0 # return ip_int def ip2int(): ip = raw_input('請輸入需要轉換成數字的IP(例如:192.168.1.10): ') ip_list = ip.strip().split('.') SUM = 0 for i in range(len(ip_list)): SUM += int(ip_list[i])*256**(3-i) return SUM #def int2ip(num): # iplist = [] # for n in range(4): # num,mod = divmod(num,256) # iplist.append(str(mod)) # rip = iplist[::-1] # rip_num = '.'.join(rip) # return rip_num def int2ip(): num = int(raw_input('請輸入需要轉換成IP的整數: ')) iplist = [] for n in range(4): num,mod = divmod(num,256) iplist.insert(0,str(mod)) return '.'.join(iplist) def show_menu(): CMDs = {'1':ip2int,'2':int2ip} while True: prompt = """\033[31;1m(1)ip轉換成數字\033[0m \033[32;1m(2)數字轉換成IP\033[0m \033[33;1m(3)退出(q)\033[0m \033[34;1m請輸入你的選擇(1/2/3):\033[0m""" choice = raw_input(prompt) if choice == '3': break print CMDs[choice]() if __name__ == '__main__': show_menu()