IP Addresses typically appear as four numbers delimited by periods, i.e. 18.104.22.168. Sometimes, however, an equivalent form known as an IP number is used the IP Number is a single integer. This is common in lookup tables, since in most programming situations it is easier to do comparisons with a simple integer. Conceptually the conversion between these two is simple, since the IP address is actually just a 4 digit number in base 256 (with the digits separated by periods).
Converting the IP address above to an IP number is 123*256^3+4*256^2+56*256+78 = 2063874126
The main challenge in execution is parsing the individual digits from the IP address from string form, since each base 256 digit may be 1, 2 or 3 decimal digits.
For completeness I also included the calculation in the other direction. The modulo operator % is the remainder term in integer division, it makes for a convenient way to change base.
From IP Address to IP Number:
//First compute the location of the delimiters, these are easiest to implement as 3 separate calculations.
//Once the delimiter positions are known, they can be used to parse out individual base 256 digits.
From IP Number to IP Address:
//Again, several calculations are used, first to create the individual digits, then to form the IP Address as a string
Parsing strings like this can be tricky, having done this several times from scratch and there there always seems to be some wrinkle. I thought it might be nice to document. That way I'll know where to find it next time.
I included a simple workbook that implements these calculations as an attachment.