Skip to content

Instantly share code, notes, and snippets.

@arteria
Forked from cslarsen/ipv4.py
Created January 22, 2013 11:18
Show Gist options
  • Select an option

  • Save arteria/4593903 to your computer and use it in GitHub Desktop.

Select an option

Save arteria/4593903 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""Functions to convert IPv4 address to integer and vice-versa.
Written by Christian Stigen Larsen, http://csl.sublevel3.org
Placed in the public domain by the author, 2012-01-11
Example usage:
$ ./ipv4 192.168.0.1 3232235521
192.168.0.1 ==> 3232235521
3232235521 ==> 192.168.0.1
"""
import sys
def from_string(s):
"Convert dotted IPv4 address to integer."
return reduce(lambda a,b: a<<8 | b, map(int, s.split(".")))
def to_string(ip):
"Convert 32-bit integer to dotted IPv4 address."
return ".".join(map(lambda n: str(ip>>n & 0xFF), [24,16,8,0]))
if __name__ == "__main__":
if len(sys.argv) <= 1:
print "Usage: ipv4 [ (address | integer)* ]"
print "Converts between IPv4 addresses and integers."
print ""
print "Example usage:"
print "$ ./ipv4 192.168.0.1 3232235521"
print "192.168.0.1 ==> 3232235521"
print "3232235521 ==> 192.168.0.1"
print ""
print "Written by Christian Stigen Larsen, http://csl.sublevel3.org"
print "Placed in the public domain by the author, 2012-01-11"
sys.exit(0)
for arg in sys.argv[1:]:
if arg.count(".") == 3:
print arg, "==>", from_string(arg)
else:
try:
print arg, "==>", to_string(int(arg))
except Exception, e:
print "Not an integer or dotted IPv4 address:", arg
sys.exit(1)
@SaFiSec

SaFiSec commented May 18, 2018

Copy link
Copy Markdown

Nic3 job Dear!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment