Question
How would I use python to convert an IP address that comes as a str
to a
decimal number and vice versa?
For example, for the IP 186.99.109.000 <type'str'>
, I would like to have a
decimal or binary form that is easy to store in a database, and then retrieve
it.
Answer
converting an IP string to long integer:
import socket, struct
def ip2long(ip):
"""
Convert an IP string to long
"""
packedIP = socket.inet_aton(ip)
return struct.unpack("!L", packedIP)[0]
the other way around:
>>> socket.inet_ntoa(struct.pack('!L', 2130706433))
'127.0.0.1'