将字符串型的IP地址(XXX.XXX.XXX.XXX)存入数据库中即浪费空间又影响性能,所以数据库中有时会将IP地址转换为整型存储,也就是IP地址的网络字节序格式。在测试时从数据库查到整型的网络字节序,需要再转回字符串型IP地址,可以通过Python代码轻松解决这个问题。如下:
>>> import socket # 导入相关模块包
>>> import struct # 导入相关模块包
>>> int(socket.inet_aton('192.168.200.106').encode('hex'), 16) # 将IP从字符串转为整型
3232286826L
>>> int(socket.inet_aton('192.168.20.135').encode('hex'), 16)
3232240775L
>>> socket.inet_ntoa(struct.pack("!I",2130706433)) # 将IP从整型转为字符串
'127.0.0.1'
>>> socket.inet_ntoa(struct.pack("!I",3232286735))
'192.168.200.15'
>>> socket.inet_ntoa(struct.pack("!I",2893810498))
'172.124.11.66'
网友评论