http://blog.sina.com.cn/s/blog_6a1837e90100rszt.html
2011
在
PHP 中,有 ip2long() 和 long2ip() 来个函数来实现 IP
地址的点分十进制字符串形式和其长整数形式之间的转换,Python
中,我没找到类似的函数,所以就自己实现一个简单形式的了。
import socket
import struct
def ip2long (ip):
"将点分十进制
IP 地址转换成无符号的长整数"
return
struct.unpack("!I", socket.inet_aton(ip))[0]
def long2ip (lint):
"将无符号长整形转换为点分十进制
IP 地址形式"
return
socket.inet_ntoa(struct.pack("!I", lint))
因为需要的是无符号的长整形数,所以,在转换时, struct.unpack() 和 struct.pack() 中使用的是
“!I” ,而不是直接使用 “I” ,这样实际上就已经做了 network byte 到 host byte 之间的处理了。
|