為什么要將ip轉(zhuǎn)int,這是為了數(shù)據(jù)庫保存ip地址時可以使用整形字段保存检号,性能更高
轉(zhuǎn)換后同樣可以使用整形進行訪問網(wǎng)站,即http://47.74.189.133 = http://793427333
使用socket 和 struct
def ip_to_int(ip):
"""ip地址轉(zhuǎn)數(shù)字"""
import socket
import struct
return socket.ntohl(struct.unpack("I", socket.inet_aton(str(ip)))[0])
def int_to_ip(num):
'''整形轉(zhuǎn)ip地址'''
import socket
import struct
return socket.inet_ntoa(struct.pack("!I", num))
if __name__ == '__main__':
print(ip_to_int('47.74.189.133')) # 793427333
print(int_to_ip(793427333)) # 47.74.189.133
其實這是進制的轉(zhuǎn)換尸饺「龀酰可以不用三方包手寫轉(zhuǎn)換
func = lambda x: '.'.join([str(int(x / (256 ** i) % 256)) for i in range(3, -1, -1)])
func(793427333)
func = lambda x: sum([256 ** j * int(i) for j, i in enumerate(x.split('.')[::-1])])
func('47.74.189.133')