UPDATE: Coffeescript
ipStringToInteger = (x) -> res = 0 (res = res * 256 + Number(y) for y in x.split(".")) res
which boils down to
var ipStringToInteger; ipStringToInteger = function(x) { var res, y, _i, _len, _ref; res = 0; _ref = x.split("."); for (_i = 0, _len = _ref.length; _i < _len; _i++) { y = _ref[_i]; res = res * 256 + Number(y); } return res; };
A short clean javascript implementation is
var ipV4StringToInteger = function(string) { var parts = string.split("."); var sum = 0; for(var i = 0; i < 4; i++) { var partVal = Number(parts[i]); sum = (sum << 8) + partVal; } return sum; };
A good implementation of pure Javascript is
var ipV4StringToInteger = function(string) { var parts = string.split("."); if(parts.length != 4) throw new Error("IPv4 string does not have 4 parts."); var sum = 0; for(var i = 0; i < 4; i++) { var part = parts[i]; if(!part.match("^\\d+$")) throw new Error("Non-digit, non-period character in IPv4 string."); var partVal = Number(part); if(partVal > 255) throw new Error("IPv4 string contains invalid value."); sum = ((sum << 8) + partVal) >>> 0; } return sum; };
source share