How to convert IP address to an integer or a long

Jordan Clist, CTO

Sometimes it is important to convert an IP address eg. 127.0.0.1 to an integer or a long for storage in a database for lookups or for various other reasons. Let this be a definitive guide :)

Eg. 127.0.0.1 Can become 2130706433


PHP

PHP has simple built in library functions to help. Despite them using a 2 instead of “to”. :sob:


	ip2long('127.0.0.1');  // 2130706433
	long2ip(2130706433);   // 127.0.0.1

Javascript

Javascript has no built in functions but you can create some simple functions to assist with this.


	function ipToLong(dot) 
	{
	    var d = dot.split('.');
	    return ((((((+d[0])*256)+(+d[1]))*256)+(+d[2]))*256)+(+d[3]);
	}

	function longToIP(int) {
 	    var part1 = int & 255;
	    var part2 = ((int >> 8) & 255);
	    var part3 = ((int >> 16) & 255);
	    var part4 = ((int >> 24) & 255);

	    return part4 + "." + part3 + "." + part2 + "." + part1;
	}


Python

Python has a few options including using the built in socket library. However below is a way to do it without including any external modules.


def IP2Int(ip):
    o = map(int, ip.split('.'))
    res = (16777216 * o[0]) + (65536 * o[1]) + (256 * o[2]) + o[3]
    return res


def Int2IP(ipnum):
    o1 = int(ipnum / 16777216) % 256
    o2 = int(ipnum / 65536) % 256
    o3 = int(ipnum / 256) % 256
    o4 = int(ipnum) % 256
    return '%(o1)s.%(o2)s.%(o3)s.%(o4)s' % locals()

Lookup IP addresses in seconds, get started now

Get Started for free