javascript - 如何使用 CoffeeScript 将 IPv4 转换为整数?

标签 javascript integer ip coffeescript

在 CoffeeScript 中,我如何将 IP(标准 IPv4 127.0.0.1)转换为整数?

编辑:这里有很多很好的答案,谢谢大家!

最佳答案

编辑: CoffeeScript

ipStringToInteger = (x) ->
  res = 0
  (res = res * 256 + Number(y) for y in x.split("."))
  res

编译为

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;
};

一个简短的纯 Javascript 实现是

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;
};

一个好的纯Javascript实现是

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;
};

关于javascript - 如何使用 CoffeeScript 将 IPv4 转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8393450/

相关文章:

javascript - 验证单选按钮组

HTML 中的 JavaScript

c - 当我在 C 中将 long int 分配给 int 时会发生什么?

R Shiny : convert reactive output in integer

linux - 将 netdiscover 与修改后的屏幕 View 参数一起使用

javascript - knockoutjs 和同位素添加新项目导致第一个元素跳来跳去

javascript - 当网站响应时,HTML/CSS 导航下拉菜单和子下拉菜单不显示

c#将表达式中的字符串转换为int

java - 防止设备改变ip

C# 十六进制转ip